有人會關心解釋爲什麼在舊版本的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