[]=メソッドの返り値

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からは代入の方を優先するようになったはず。