【Ruby】tapメソッドについて調べてみた
はじめに
現在プログラミングスクールでRubyを中心に学習を進めています。
現在は転職活動の準備がメインのため、隙間時間にQiitaやZennのトレンドを拝見したり、PFのテストコードを作成しています。
先日スクールの模擬面接練習をしている中で、Rubyの面白いメソッドに関する話になりました。過去の受講生の方で、技術に関心があるかを測るためにRubyの面白いと思ったメソッドを教えてくださいと質問されたことがあるそうです。
今日時間があったので、Rubyの面白いメソッドに関して調べていく中でtapメソッドが出てきました。
これまでtapメソッドは使用したことがなかったですが、なかなか使えそうなメソッドだったので自分の学習のために記録したいと思います。
tapメソッドとは?
公式リファレンスによると、
self を引数としてブロックを評価し、self を返します。
メソッドチェインの途中で直ちに操作結果を表示するためにメソッドチェインに "入り込む" ことが、このメソッドの主目的です。
との記載がありました。
この文章だけではほとんど理解できなかったので、他のサイトも確認してみました。
こちらのサイトの記載によると、
メソッドチェーンの途中経過を見るためのデバッグ目的で作られているようです。
確かに公式にもメソッドチェインに "入り込む" ことが、このメソッドの主目的と記載があります。
上記サイトだと、sortとreverseメソッドの後にtapメソッド挟んでいるコードがわかりやすかったです。
tapメソッドを使ってコードを一文で書いてみる
こちらの動画を元に、コードをもう少しわかりやすくしtapメソッドを使用してみました。
tapメソッドは未使用
array = Array.new
array << 1
array << 2
array << 3
puts array
=> 1
2
3
こちらはtapメソッドを使用せず、Array.newで空の配列を作り<<を使って要素を追加しています。
paizaを解いている中でも個人的によく使う書き方になります。
tapメソッドを使用
array = [].tap { |a| a << 1 << 2 << 3 }
puts array
=> 1
2
3
このコードでは空の配列を生成しつつ、そのままブロック内で<<を使って要素を追加しています。
tapメソッドを使うことで、そのまま次の処理を書けるのは可読性が上がるなと感じました。
今後アプリ開発やpaizaなどアルゴリズム問題を解くときに試してみたいと思います。
最後までご覧いただきありがとうございました。
Discussion