eval族
evalについてです。
|メソッド名|動作| |Kernel.#eval|selfが呼び出された式を評価する| |Module#class_eval|レシーバのクラスをselfとして式を評価する| |Module#module_eval|レシーバのモジュールをselfとして式を評価する| |Basic#Object#instace_eval|レシーバのオブジェクトをselfとして式を評価する|
Kernel.#eval
foo = 'bar' eval 'foo' => "bar"
evalとBindingオブジェクト
Bindingオブジェクトを使うことで、コンテキストに名前がないものでも評価されるようになります。
class Foo def initialize @foo = 'foo' end def bar local_val = 'bar' binding end end x = Foo.new y = x.bar eval "@foo", y => 'foo' eval "local_val", y => 'bar'
ただし、initializeにbindingをさしてもうまくいきませんでした。
eval "@foo", y TypeError: wrong argument type String (expected binding)
以上です。
参考