注意:「パターンマッチができたよ」という話ではない
このエントリは、RubyKaigi前夜祭 に顔を出した発表者の鳥井が、尊敬するpattern_match gem の作者の辻本さんに「期待してますよー」と言われて心底震え上がり、期待値コントロールを痛切に感じて書き上げたものです。 なので言い訳が多いのはそれが主旨だからです。
- 「おれのかんがえたさいきょうのパターンマッチ」を考えた
- ざっくりパーサーとゆるふわマッチャを Rubyで 実装して Ruby インタプリタ(parse.y と compile.c)にそっと差し込んで動かした(もちろん本実装ではない)
- パターンマッチのあるRubyが動くところを実際にみてもらって、Rubyにパターンマッチを入れる議論が盛り上がると嬉しい
- Ruby しか書けない人間がゆるふわにRubyの文法を拡張する抜け道を知ってもらって、いろんな人のおもしろRubyを見てみたい
- パターンは%p(…) で書く
- マッチ用オペレーターは
=~
と===
Ex: =~
を使う
if %p([x, :y, 5]) =~ [1, :y, 5]
p “The first element is #{x}”
else
p “Not Match!”
end
#=> “First Element is 1”
Ex: ===
を使う
user = { name: 'yuki', from: 'Fukuoka' }
case user
when %p({name: name, from: 'Hiroshima'})
p "#{name} is a local people. Thank you!"
when %p({name: name, from: _})
p "#{name} is a visitor. welcome!"
end
- パターンマッチってどんなものか
- おれのかんがえたさいきょうのパターンマッチ
- ゆるふわRuby拡張のやりかた
- とりあえず一緒にパターンマッチについて考えないかのお誘い
以上です!