[]=メソッドの返り値
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 p (Foo.new.[]=(:aaa, :bbb)) # => 123
(追記1) ドットを使ってメソッドを呼び出すとreturnの返り値が返りますね。んー、直交性がない仕様のような気がします。
(追記2) znzさんからはてブ経由でコメントがありました。どうもありがとうございます。
1.6の頃はメソッドの返値になっていましたが、1.8からは代入の方を優先するようになったはず。