加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 使用字符串按名称访问本地变量

发布时间:2020-12-16 23:05:47 所属栏目:百科 来源:网络整理
导读:我是新手,但我有以下代码: when /^read (.+)$/ puts "Reading #{$1}:" puts $1.description.downcase 我想使用$1作为变量,我可以调用方法,目前解释器为“Door”返回“NoMethodError:undefined method’description’:String”. 编辑: 例如: door = Item
我是新手,但我有以下代码:
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读