私はRubyの可変スコープがどのように機能するかを100%確信していません。require "path.rb"
ステートメントの使用に問題があります。どのようにして現在のスコープに「必要」するのですか?
ファイルa.rb:
a = {
:hey => "ho"
}
require "path/to/b.rb" # => true
ファイルb.rb:ここでは、問題を引き起こしているコードスニペットです
b = "harhar"
a[:test] = b
a.rb
の範囲は、モジュール内にある::クラス、私が試してみると、a
の変数b.rb
にアクセスしようとすると、a
という変数が現在のスコープにないというエラーが表示されます。
私は、含まれているファイルが自分のスコープ内にあるので、衝突しないように読んでいます。もしそうなら、これを回避するためのコンベンションは何ですか?
メソッドを使用する場合は、これも機能しますか?クラスA :: B :: Cのコンテキストでは「x.rb」が含まれ、「C」には「hello」というメソッドがあります.x.rbから「hello」を呼び出すにはどうすればよいですか? – tarnfeld
@tarnfeld:メソッドをモジュールに配置します。グローバルにも利用可能にしたい場合は、グローバルスコープに含めることができます。 – Chuck