Ruby の []= メソッドが呼び出し方によって戻り値が異なる
Ruby の []= メソッドは呼び出し方によって戻り値が変わるみたい。
class X def []= key, value key + value end end x = X.new x["name"] = "homu" # => "homu" x.[]=("name", "homu") # => "homu"
期待する結果としては key + value
が返ってきて欲しいんですが、[key] = value
という呼び出し方では右辺値が返ってきます。
[]=(key, value)
では期待する値が返ってきます。
[key] = value
という呼び出し方は []=(key, value)
のシンタックスシュガーなはずなんですが、書き方によって結果が変わるのがちょっと困りますねぇ。