如何修改名称已赋予的变量的值

时间:2013-03-07 18:18:43

标签: ruby

我希望有一个接受字符串的方法,然后使用该字符串的名称更新变量。这是我尝试的一个例子:

@other_class = OtherClass.new()

def change_variable(variable_string)
  self.@other_class.send.variable_string += 1
end

我收到错误:

  

语法错误,意外的tIVAR

指针在上面方法中的'send'之前。有没有人有任何建议让这项工作?

2 个答案:

答案 0 :(得分:2)

您可能想要instance_variable_set http://ruby-doc.org/core-2.0/Object.html#method-i-instance_variable_set

我认为使用变量的语法是:

other_var = ('@' + variable_string).to_sym

@other_class.instance_variable_set( other_var, @other_class.instance_variable_get( other_var ) + 1 )

答案 1 :(得分:1)

直接的合成错误是您错误地使用了self@

任何一方都可以,但不能相互结合。

所以在你的情况下self.other_class.send...会好的,但你不能将它声明为@。 和@一样,但是你不能self

这些是为了做不同的事情,而这些是

@是一个实例变量,self也是如此,但区别在于使用@直接调用属性other_class,而self调用的位置other_class方法@

所以@other_class = my_milk_man是一个getter和setter,所以你可以做到

self.other_class至于哪里

-> self.other_class (as getter) self.other_class = my_milk_man

self.other_class= (as setter) - > {{1}}。