0
@object0 = "bars"
@object1 = "foobs"

query0 = "@object" + "0"
puts instance_variable_get(query0) #=> bars

puts instance_variable_get(:@object1) #=> foobs

query1 = ":" + "@object" + "1"
puts instance_variable_get(query1) #=> ':@object1' is not allowed as an instance variable name!

グローバルスコープでインスタンス変数を参照できる唯一の方法であるにもかかわらず、問題は間違いなくコロンです。私は、instance_variable_get メソッドが巧妙すぎると思います。無効と見なされるインスタンス変数を強制的に受け入れる方法はありますか? 回避策はありますか?最初は、単純な文字列をメソッドに渡していたという事実に何か関係があるのではないかと思いましたが、ご覧のとおり、instance_variable_get の最初の 2 つの使用は完全に機能し、文字列を使用しています。

4

2 に答える 2