20

有没有人对 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

如果是这样,是否会将requiregem 放入全局命名空间中,就像在文件顶部时一样?

4

2 回答 2

17

如果是这样,require 是否会将 gem 放入全局命名空间中,就像文件顶部的相同 require 一样?

是的。require没有范围,而load有。

于 2010-02-09T16:20:59.927 回答
6

是的,它完全有效并且按预期工作,因为 require 没有作用域

Require 从指定文件中提取代码并尝试就地使用它——这可能意味着这样做并不明智,但可以做到。

本地方法范围将不受影响,并且任何类定义等都将在预期范围内

于 2010-02-09T16:22:07.793 回答