Rubyのタップメソッドの利点

概要

ブログ記事を読んでいたところ、著者が次のようなスニペットでタップを使用していることに気づきました。

user = User.new.tap do |u|
  u.username = "foobar"
  u.save!
end

私の質問は、tap を使用するメリットや利点は正確に何ですか?次のようにすることはできないでしょうか:

user = User.new
user.username = "foobar"
user.save!

あるいはさらに良いのは:

user = User.create! username: "foobar"

解決策

読者が次のことに遭遇したとき:

user = User.new
user.username = "foobar"
user.save!

3 行すべてをたどって、それが user という名前のインスタンスを作成しているだけであることを認識する必要があります。

もしそうなら:

user = User.new.tap do |u|
  u.username = "foobar"
  u.save!
end

そうすればそれはすぐに明らかになるでしょう。リーダーは、インスタンス ユーザーが作成されたことを知るためにブロック内の内容を読み取る必要はありません。