有人会关心解释为什么在旧版本的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
此更改背后的原因是什么?
如果使用'Kernel#send'来调用setter,它将返回实际值。 – 2013-04-09 02:18:18