0

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

@other_class = OtherClass.new()

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

我收到错误消息:

语法错误,意外的 tIVAR

在上述方法中使用“发送”之前的指针。有没有人有任何建议来完成这项工作?

4

2 回答 2

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 )
于 2013-03-07T18:28:31.220 回答
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)

于 2013-03-07T18:31:01.993 回答