【Ruby】tapメソッドの使用方法を紹介します

今回は、rubyのtapメソッドの使い方を紹介します。

tapメソッドは、メソッドチェーンのデバッグによく使用されます。

そのため、複雑な開発であったり、処理速度を意識したコードなどを読み解くのに有効です。

最近使用方法を知ったので、備忘録として残しておきます。

versions
  • ruby 2.6.5

tapメソッドを使用しよう

tapメソッドはブロックの中で実行された評価を無視して、レシーバーそのものを返り値とします。

難しいのでとりあえず実行していきましょう。

irb(main):01:0> hello = "Hello World"
=> "Hello World"
irb(main):02:0> hello = "Hello World".tap {|str| p str.reverse}
"dlroW olleH"
=> "Hello World"
irb(main):03:0> hello = "Hello World"
=> "Hello World"

確かにデバッグに有効そうですね!

tapメソッドとbreakを組み合わせる

参考に載せておきますが、ちょっと面白い記事があったので、僕も試してみました。

tapメソッドの返り値は、レシーバーそのものと説明しました。

しかし、breakを使用すると、ブロック内で実行された結果が返ってきます。

irb(main):013:0> hello = "Hello World".tap {|str| break str.reverse}
=> "dlroW olleH"
irb(main):014:0> hello
=> "dlroW olleH"

breakは処理を途中で抜けるから、という理由になるのでしょうか?
これは面白いですね。

まとめ

  • tapメソッドはレシーバーそのものを評価結果として返す
  • tapメソッドとbreakを組み合わせるとブロック内の評価結果を返す

参考

TapがRubyの新たな制御構造の世界を開く