Rubyのメソッド名の末尾に = (イコール)


[【Rails】fields_for と accepts_nested_attributes_for - kzy52's
blog](http://kzy52.com/entry/2013/07/10/200144)

にある通り

> profile_attributes= と academics_attributes= メソッドが追加される

といったような末尾が=のメソッド名はどのような利点があって、どのようなときに使うのでしょうか？




通常のメソッドとの違いは、代入構文のように使用できる点です。

`hoge=` メソッドを定義すると、`obj.hoge = value` のように `=` の前に空白があっても `hoge=` メソッドが呼び出せます。

また、メソッド内で戻り値を指定しても無視され、引数の値がそのまま返されます。  
これは、`foo = obj.hoge = value` のように使用した時に、ちゃんと foo に value が代入されるようにするためだと思います。




通常のメソッドとの違いは、代入構文のように使用できる点です。

`hoge=` メソッドを定義すると、`obj.hoge = value` のように `=` の前に空白があっても `hoge=` メソッドが呼び出せます。

また、メソッド内で戻り値を指定しても無視され、引数の値がそのまま返されます。  
これは、`foo = obj.hoge = value` のように使用した時に、ちゃんと foo に value が代入されるようにするためだと思います。

