我希望有一个接受字符串的方法,然后用该字符串的名称更新一个变量。这是我尝试的一个例子:
@other_class = OtherClass.new()
def change_variable(variable_string)
self.@other_class.send.variable_string += 1
end
我收到错误消息:
语法错误,意外的 tIVAR
在上述方法中使用“发送”之前的指针。有没有人有任何建议来完成这项工作?
我希望有一个接受字符串的方法,然后用该字符串的名称更新一个变量。这是我尝试的一个例子:
@other_class = OtherClass.new()
def change_variable(variable_string)
self.@other_class.send.variable_string += 1
end
我收到错误消息:
语法错误,意外的 tIVAR
在上述方法中使用“发送”之前的指针。有没有人有任何建议来完成这项工作?
你可能想要 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 )
self
直接的语法错误是您使用@
错误。
任何一个都可以,但不能相互结合。
所以在你的情况下self.other_class.send...
会很好,但是您不能将其声明为@
. 就像那样@
,但你不能这样做self
。
这些是为了做不同的事情,这些是
@
是一个实例变量,self
但不同的是 using直接@
调用属性other_class
到哪里self
调用方法的位置other_class
。
所以@
,getter 和 setter 合二为一,因此您可以这样做
@other_class = my_milk_man
至于在哪里
self.other_class
->
self.other_class (as getter)
,
self.other_class = my_milk_man
-> self.other_class= (as setter)
。