私はblock
を得ることができ、そこに定義された変数を使用する方法(define_variables
)を書きたいと思います。出来ますか?例えば、私は5インチの出力を得たいと思っています。メソッドのブロックのスコープにアクセスできますか?
module A
def self.define_variables
yield
puts a # not 5 :(
end
end
A::define_variables do
a = 5
end
多分evalといくつかの秘訣がありますが、まだ誰も見つかりませんでした。
実際の使用例は何ですか?それは私にとってはかなり後ろにあるようです。 –
渡されたブロック内で行われた計算を利用したい場合は、そのブロックから何かを返して何かを行うことが最善の方法です。渡されるproc内のローカル変数の命名に頼るのは大変意味がありません。誰かが "a"を変数として使用することを保証するにはどうすればよいですか?あなたが望んでいないときに、任意のprocが独自の変数をストンプするのをどのように防ぎますか? –
私は単純なコンソールゲームのための 'GameWorld'モジュールを作ろうとしていました。このモジュールは' load'と 'run'メソッドを持っています。 loadメソッドを使用してgame_objectsをロードして配列に格納し、 'run'を使用してそれらの間の相互作用を記述します。 GameWorldのスコープでは、game_objects配列にアクセスしていくつかの情報(健康、スコアなど)を出力できます。 「対称性」と学習目的のために、私は両方の方法でブロックを使用しようとしていました。今は、オブジェクトを 'game_objects'というモジュールの定数に直接ロードします。とにかく、助けてくれてありがとう、スコープとブロックがどのように機能するかがはっきりしています。 – evfwcqcg