tapについて

最近勉強のためにgemを作成しているのでだが、参考にしているgemのソースの中でtapメソッドを使っている箇所があった。
ので、今回はtapメソッドについて覚え書きです。

tapメソッドはブロック変数にレシーバ自身を入れてブロックを実行する。戻り値はレシーバ自身。
例えば次のようになる。この場合はレシーバが配列オブジェクト。

[].tap { |n| n << %w[a b c d ] }
=> [["a", "b", "c", "d"]]

空の配列オブジェクトをブロック変数に入れてブロックを実行。自分自身(配列オブジェクト自信)を戻り値として返す。