有’variable_get’方法吗? 如果没有,我该如何创建自己的?

礼貌的irb:

2.0.0-p0 :006 > @instance_variable = "from an instance variable" => "from an instance variable" 2.0.0-p0 :007 > variable = "from a variable" => "from a variable" 2.0.0-p0 :008 > instance_variable_get(:@instance_variable) => "from an instance variable" 2.0.0-p0 :009 > variable_get(:variable) NoMethodError: undefined method `variable_get' for main:Object from (irb):9 from /usr/local/rvm/rubies/ruby-2.0.0-p0/bin/irb:16:in `' 2.0.0-p0 :010 > 

我只是尝试以编程方式“查询”变量并返回其内容。 与instance_variable_get完全相同,但对于变量。

这是一个自定义的rspec匹配器。 不是一些疯狂的解决方法:)

在Ruby 2.1及更高版本中,您可以使用Binding#local_variable_get

在Ruby的早期版本中,您必须使用eval 。 如果要在评估假定的变量名之前进行一些健全性检查,可以检查命名变量是否在local_variables

你可以使用eval

 irb(main):007:0> variable = "from a variable" => "from a variable" irb(main):008:0> eval 'variable' => "from a variable"