[]=メソッドの返り値 - 趣味的にっき

screenshot

Rubyでは、=メソッドを自分で定義できるのですが、どうもメソッドの中でreturnした値は無視されるぽいです。そういうもの? んー、=メソッドの中でエラーが発生したら例外で返すべきか。ちなみにRubyのバージョンは、ruby-1.8.6-111[i386-mswin32]です。なおRuby本体のソースは未確認です。 class Foo def []=(key, val) return 123 end end p (Foo.new[:aaa] = :bbb) # => :bbb

http://d.hatena.ne.jp/ha-tan/20080107/1199657583

1.6の頃はメソッドの返値になっていましたが、1.8からは代入の方を優先するようになったはず。

http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/ha-tan/20080107/1199657583