有没有人对Ruby的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
将gem放在全局命名空间中,就像放在文件顶部那样吗?
答案 0 :(得分:16)
如果是这样,需要放置宝石 进入全局命名空间同样如此 在文件的顶部需要吗?
是。 require
没有范围,而load
则有。
答案 1 :(得分:5)
是的,它完全有效且按预期工作,因为要求不受范围限定
要求从指定文件中提取代码并尝试就地使用它 - 这可能意味着这样做是不明智的,但是可以这样做。
本地方法范围不受影响,任何类定义等都将处于预期范围