我是新手,但我有以下代码:
when /^read (.+)$/ puts "Reading #{$1}:" puts $1.description.downcase
我想使用$1作为变量,我可以调用方法,目前解释器为“Door”返回“NoMethodError:undefined method’description’:String”.
编辑:
例如:
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。