14
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Ruby on Rails】=を使う代入関数。書き方とハマった部分書くけど、使い所わからん。

Posted at

最近、代入関数を使いました。
んで、代入関数の使い方とハマった部分をまとめ。

ただ、使い所がイマイチわからなかったので、知ってる人いたらコメントとかしてもらえると嬉しいです。

代入関数は、代入演算子を利用して引数を渡せるってのがポイントだと思うんですよね。

代入関数を定義しましょう。

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

ちゃんと更新されてます。

これでハマった。。

とまぁ、代入関数に関して書きましたが、この代入関数の使い所が掴めてないのです。

14
7
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?