ツナワタリマイライフ

日常ネタから技術ネタ、音楽ネタまで何でも書きます。

Ruby - Enummerable#grep

はじめに

kawasaki.rbに参加してきました。

kawasakirb.connpass.com

togetter.com

Perfect Ruby読書会

パーフェクトRuby (PERFECT SERIES 6)

パーフェクトRuby (PERFECT SERIES 6)

5.5.1 Enummerableなオブジェクト > ブロックを評価した結果の配列

まぁmapとか出てきたんですが、一番びっくりしたのはgrepですね。

ref.xaio.jp

===で比較して、マッチしたものを返すようですが、===の挙動が引数にとるobjectによって違うと。

Regexp

正規表現マッチ。

irb(main):042:0> array = [1, 2, "String", "string", "integer"]
=> [1, 2, "String", "string", "integer"]
irb(main):043:0> array.grep(/^s/)
=> ["string"]

Module

そのクラスに属するかどうか。

irb(main):045:0> array.grep(String)
=> ["String", "string", "integer"]
irb(main):046:0> array.grep(Integer)
=> [1, 2]

ブロック

irb(main):048:0> array.grep(String) {|str| str.upcase}
=> ["STRING", "STRING", "INTEGER"]

なるほど。

Enumerableモジュール

Enumerable - Rubyリファレンス

今回はarrayを例にしましたが、hashやstructもそうですね。数え上げることができる、ってことで.all?やany?といったメソッドをだしています。このへん今までまったく使ったことなくてはじめて知りましたね。

おわりに

わずか15分程度の読書会でたくさん発見あったので、勉強会、大切。そしてアウトプットする週間がついてからインプットの場に行くとその効果を実感。またkawasaki.rbいきます!