首页 > 解决方案 > 将变量的名称作为输入并输出其值 - Ruby

问题描述

我想知道是否有一些Ruby可以做这样的事情:

@my_var = "foo"
some_function_i_dont_know_name_of("@my_var")
 => "foo"

标签: ruby

解决方案


好像您正在寻找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

推荐阅读