BasicObject.class_eval do
def instance(ins)
eval "@#{ins}=#{ins}", binding
end
end
問題のコードです。私がやりたいことは、次のコードで、クラス Foo 内に新しいインスタンス変数 bar を作成することです。このコードを実行した後に得られるもの:
class Foo
bar = 3
end
Foo.instance(:bar)
は:
NameError: undefined local variable or method `bar for Foo:Class
from /Users/Solomon/Desktop/Ruby/instance.rb:3:in `instance'
from /Users/Solomon/Desktop/Ruby/instance.rb:3:in `eval'
from /Users/Solomon/Desktop/Ruby/instance.rb:3:in `instance'
なぜこうなった。