0

文字列を受け取り、その文字列の名前で変数を更新するメソッドが必要です。これは私の試みの例です:

@other_class = OtherClass.new()

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

エラーが発生しました:

構文エラー、予期しないtIVAR

上記の方法で「send」の直前にポインタを置きます。誰かがこれを機能させるための提案がありますか?

4

2 に答える 2

2

おそらくinstance_variable_sethttp ://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が、違いは、メソッドを呼び出す場所に関して、を使用し@て属性other_classを直接呼び出すことです。selfother_class

ゲッターとセッターの両方が1つになっているので@、次のことができます

@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 に答える