2010-02-09 2 views
17

Кто-нибудь знает достаточно о Руби require сказать мне, если справедливо следующее синтаксис:Динамически требующие файлы?

class Something 

    def initialize(mode) 
    case mode 
    when :one then require 'some_gem' 
    when :two then require 'other_gem' 
    end 
    end 

end 

s = Something.new 

Если да, то будет ли require место драгоценный камень в глобальное пространство имен, как это будет, когда в верхней части файла?

ответ

15

Если да, то Требовать место драгоценный камень в глобальное пространство имен, как же требуют в верхней части файла будет?

Да. require не имеет объем, а load.

+0

Фантастические, вот что я хотел бы знать :) –

4

Да, это вполне допустимо и работает, как ожидалось, поскольку требует не область видимости

Требовать тянет в коде из указанного файла и пытается использовать его на месте - это может означать, что это не так разумно делать, но да, это можно сделать.

локальной области видимости метод не будет затрагиваться и любое определение класса и т.д. будет в ожидаемом объеме

+0

извинений по поводу правописания;) –

+0

Нет проблем - большой вопрос (+ 1 от меня) –

Смежные вопросы