Я хотел бы знать, есть ли что-то Ruby, которое делает что-то вроде этого:
@my_var = "foo" some_function_i_dont_know_name_of("@my_var") => "foo"
Похоже, вы ищете instance_variable_get.Из документов:
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
Возвращает значение заданной переменной экземпляра или nil, если переменная экземпляра не установлена.Часть @ имени переменной должна быть включена для обычных переменных экземпляра.Выдает исключение NameError, если предоставленный символ недопустим в качестве имени переменной экземпляра.Строковые аргументы преобразуются в символы.
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
Да, есть.
@my_var = "foo" instance_variable_get("@my_var") => "foo"