有人愿意解释一下为什么在旧版本的 Ruby 中,赋值的结果是属性设置方法返回的值,但是在 Ruby 1.8 之后,赋值的值始终是参数的值;方法的返回值被丢弃。在下面的代码中,旧版本的 Ruby 会将 result 设置为 99。现在 result 将设置为 2。
class Test
def val=(val)
@val = val
return 99
end
end
t = Test.new
result = (t.val = 2)
result # => 2
这种变化背后的原因是什么?