Ruby で Object#instance_variable_set 等を使うときの注意
Ruby では Object#instance_variable_set
を使用することで任意の名前のインスタンス変数に値を設定することができます。
class X attr_reader :name end x = X.new # @ + 変数名を渡す x.instance_variable_set(:@name, "homu") x.name # => name
Object#instance_variable_set
で渡す変数名には @
を含める必要が有ります。
これは Object#instance_variable_get
などでも同様です。
これ、なんで変数名に @
を含めないとダメなんですかね。
逆に @
を含めなくてもよいケースってあるのかな。