我对此很陌生,但我有以下代码:
when /^read (.+)$/
puts "Reading #{$1}:"
puts $1.description.downcase
我想使用 $1 作为可以调用方法的变量,当前解释器返回一个"NoMethodError: undefined method 'description' for "Door":String"
.
Edit:
例如:
door = Item.new( :name => "Door", :description => "a locked door" )
key = Item.new( :name => "Key", :description => "a key" )
您需要提供代码设置的更多详细信息才能获得好的答案(或者让我找出这是哪个问题的重复项:)。引用了什么样的变量$1
?以下是一些猜测:
-
如果这实际上是同一实例上的方法,您可以通过以下方式调用该方法:
# Same as "self.foo" if $1 is "foo"
self.send($1).description.downcase
-
如果这些是实例变量,则:
# Same as "@foo.description.downcase"
instance_variable_get(:"@#{$1}").description.downcase
-
如果这些是局部变量,您不能直接执行此操作,您应该更改代码以使用哈希:
objs = {
'foo' => ...,
'key' => Item.new( :name => "Key", :description => "a key" )
}
objs['jim'] = ...
case some_str
when /^read (.+)$/
puts "Reading #{$1}:"
puts objs[$1].description.downcase
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)