gpt4 book ai didi

ruby - 使用字符串按名称访问局部变量

转载 作者:数据小太阳 更新时间:2023-10-29 07:04:30 27 4
gpt4 key购买 nike

我是新手,但我有以下代码:

when /^read (.+)$/
puts "Reading #{$1}:"
puts $1.description.downcase

我想使用 $1 作为我可以调用方法的变量,目前解释器返回一个 "NoMethodError: undefined method 'description' for "Door":String"

编辑:

例如:

door = Item.new( :name => "Door", :description => "a locked door" )
key = Item.new( :name => "Key", :description => "a key" )

最佳答案

您需要提供有关代码设置的更多详细信息才能获得好的答案(或者让我弄清楚这是哪个问题的重复:)。 $1 引用了哪些变量?以下是一些猜测:

  1. 如果这实际上是同一实例上的一个方法,您可以通过以下方式调用此方法:

    # Same as "self.foo" if $1 is "foo"
    self.send($1).description.downcase
  2. 如果这些是实例变量,那么:

    # Same as "@foo.description.downcase"
    instance_variable_get(:"@#{$1}").description.downcase
  3. 如果这些是局部变量,您不能直接这样做,您应该更改代码以使用哈希:

    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

关于ruby - 使用字符串按名称访问局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5920841/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com