@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 的前两个用法完美地工作,它们使用字符串。