2

私はよく次のことをします。

@value = @value.some_method

しかし、Ruby にはそのための短い構文はありませんか? 一部のメソッドは bang に相当するものを提供しますが、残念ながらすべてではありません...

反復には、次を使用できます。

 i += 1

それ、または同様のものは、上記のコード スニペットでも利用できますか?

4

2 に答える 2

2

これをより短い方法で行うものはありません。

公平を期すために、これは異常なパターンであり、特にまれではありませんが、次のような演算子があると混乱を招きます。

@value .= some_method

読み取り時にどのように解析されることになっていますか?

Tin Man が指摘しているように、ここではインプレース オペレーターが最適です。

于 2013-01-03T14:55:34.663 に答える
1

変数の名前を取得する方法がないため、実際の変数をレシーバーとして使用することはできません。代わりに、次のように変数の名前を使用する必要があります。

class A
  attr_accessor :value
  def change_to_do_something name
    instance_variable_set(name, "do something")
  end
end

a = A.new

a.value = "Hello"
p a.value
# => "Hello"

a.change_to_do_something(:@value)
p a.value
# => "do something"
于 2013-01-03T14:58:46.120 に答える