将变量名称作为输入并输出其值-Ruby

aar*_*ona 0 ruby

我想知道是否有某种Ruby可以做到这样:

@my_var = "foo"
some_function_i_dont_know_name_of("@my_var")
 => "foo"
Run Code Online (Sandbox Code Playgroud)

spi*_*ann 5

好像您在寻找instance_variable_get。从文档:

返回给定实例变量的值,或者nil未设置实例变量。@常规实例变量应包括变量名称的一部分。NameError如果提供的符号作为实例变量名称无效,则引发异常。字符串参数将转换为符号。

class Fred
  def initialize(p1, p2)
    @a, @b = p1, p2
  end
end
fred = Fred.new('cat', 99)
fred.instance_variable_get(:@a)    #=> "cat"
fred.instance_variable_get("@b")   #=> 99
Run Code Online (Sandbox Code Playgroud)