【问题标题】:Dynamically requiring files?动态需要文件?
【发布时间】:2011-01-14 21:20:19
【问题描述】:

有没有人足够了解 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 放入全局命名空间中?

【问题讨论】:

    标签: ruby dynamic rubygems namespaces require


    【解决方案1】:

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

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

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

    【讨论】:

    • 对拼写道歉 ;)
    • 没问题 - 好问题(来自我的 +1)
    【解决方案2】:

    如果是这样,需要放置宝石吗 进入全局命名空间一样 require 在文件的顶部会?

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

    【讨论】:

    • 太棒了,这就是我想知道的:)
    猜你喜欢
    • 2017-01-20
    • 2020-05-07
    • 2020-04-13
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多