最近、代入関数を使いました。
んで、代入関数の使い方とハマった部分をまとめ。
ただ、使い所がイマイチわからなかったので、知ってる人いたらコメントとかしてもらえると嬉しいです。
代入関数は、代入演算子を利用して引数を渡せるってのがポイントだと思うんですよね。
代入関数を定義しましょう。
hoge.rb
class Hoge
attr_accessor :id
def fuga=(num)
@id = num + 100
end
end
hogeクラスにfugaというメソッドを用意しました。
fuga=(num)と書くと代入関数を表します。
で、このfugaに代入演算子で引数を渡すと。
pry(main)> h = Hoge.new
=> #<Hoge:0x007ff1f80f6940>
pry(main)> h.fuga = 100
pry(main)> h.id
=> 200
ふ〜〜〜!!idが200になってる〜〜!!
これはこれで、使いやすい。
ってとこまでは、よかったんだ。
ハマったのはこれ。
[10] pry(main)> h.fuga = 500
=> 500
わかります?
h.fugaに500渡してるんだから戻り値600であってほしいんですよ?
def fuga=(num)
@id = num + 100
end
って定義してるわけですから。
この代入関数なんですが、戻り値は代入した値が返ってくるんですよね・・・・。
これで、idの値を確認すると
[11] pry(main)> h.id
=> 600
ちゃんと更新されてます。
これでハマった。。
とまぁ、代入関数に関して書きましたが、この代入関数の使い所が掴めてないのです。