LoginSignup
2
1

More than 3 years have passed since last update.

Rubyのtapの動きと使い方

Last updated at Posted at 2019-11-21

既出ネタですが、自分の頭を整理するためにアウトプット。

tapとは

ブロックにレシーバ自身を入れてブロックを実行。
戻り値にレシーバ自身を返す。

どんな動きか

レシーバーについて何かしたいけど,したあとそのレシーバーがほしい。
と言われてもよく分からなかったので、こちらの記事がとても分かりやすかったです。

とても分かりやすかった記事はこちら。
Ruby | tap がよく分かってなかったので基本を調べてみた

a = 1
a.tap { |i| i*3 }
put a
# => 1

このコードだと、aにいれた1をtapの中で3倍しているけど、aはなにも変わってない。

具体的になにに使えるか

こちらの記事にあった用途で、実際のプロジェクトで使いました。
Rubyのtapメソッドが便利なので紹介する

HogeModel.new(params).tap(&:save).id

saveメソッドはtrue,false返すので、そうじゃなくて保存したHogeModelオブジェクトを戻り値として欲しい時に、この1行で簡潔に書ける。
その他、ブロックの中でデバッグが便利だという話ですが、そこはまだ手を動かしてないので、自分で動作させたら追記します。

2
1
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
2
1