Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

Regex#matchに続けてメソッドチェインをしたい場合、ブロックを渡すか、tapに繋げる

Regex#matchに続けてメソッドチェインをしたい場合、
ブロックを渡すか、tapに繋げる事で実現できます。

ブロックを渡す

ブロックを渡すと、結果が真の場合ブロックの中身を実行してくれます。
真でない場合はnilを返します

/(?<hrgn>\p{hiragana}+.*)/.match("ふが"){|m| m[:hrgn]}
#=> "ふが"

/(?<hrgn>\p{hiragana}+.*)/.match("piyo"){|m| m[:hrgn]}
#=> nil

tapとbreakの合わせ技を使う

tap結果をreturnして使う場合はbreakです

/(?<hrgn>\p{hiragana}+.*)/.match("ふが").tap{break self ? true : false}
#=> true