20

require以下が有効な構文であるかどうかを教えてくれるRubyについて十分に知っている人はいますか?

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をグローバル名前空間に配置しますか?

4

2 に答える 2

17

もしそうなら、requireは、ファイルの先頭にある同じrequireと同じように、gemをグローバル名前空間に配置しますか?

はい。requireスコープはありませんが、スコープはありloadます。

于 2010-02-09T16:20:59.927 に答える
6

はい、requireのスコープが設定されていないため、完全に有効であり、期待どおりに機能します。

Requireは、指定されたファイルからコードをプルして、その場で使用しようとします。これは、実行するのが賢明ではないことを意味する場合がありますが、実行できます。

ローカルメソッドのスコープは影響を受けず、クラス定義などは期待されるスコープになります

于 2010-02-09T16:22:07.793 に答える