Rubyでパターンマッチが使えるライブラリを作ってみた。
Rubyには、配列などから値を取り出したりするパターンマッチの機能はありません。
しかし、時々欲しいと思うことがあります。そんな時のために作ってみました。
(実は自分でもなんで作ったんだろうと思うような時もあるのですが)
githubで公開しています。https://github.com/tana/ruby-pattern-match
使い方
match.rbをrequireなどで読み込んだら、
match [1, 2, 3] do pat [:a, :b, :c] do a + b + c end end
のように使えます。
条件分岐でマッチするかしないかを分ける場合、
match [1, 2] do pat [:a, :b], cond { b == 2 } do a end end
のように、condをパターンの後に付ければ条件を付けることができます。
配列だけではなくStructにも、
Aaaaa = Struct.new(:a, :b) match Aaaaa[1, 2] do pat Aaaaa[:a, :b] do a + b end end
のように、値を取り出すことができます。
その他にもいろいろな機能がありますが、test.rbにはいくつか例が書いてあります。