古いバージョンの Ruby では、代入の結果が属性設定メソッドによって返される値だった理由を誰かが説明したいと思いますが、Ruby 1.8 以降では、代入の値は常にパラメーターの値になります。メソッドの戻り値は破棄されます。次のコードでは、Ruby の古いバージョンでは結果が 99 に設定されていましたが、結果は 2 に設定されます。
class Test
def val=(val)
@val = val
return 99
end
end
t = Test.new
result = (t.val = 2)
result # => 2
この変更の背後にある理由は何でしたか?