パターンは、値と関数を持つハッシュです。例えば:
pattern = {a:1,b:2,c:function(x){ return x<5; }}
オブジェクトがパターンに一致するかどうかをチェックする関数があります。たとえば、obj.a == 1、obj.b == 2、obj.c <5の場合、オブジェクトは上記のパターンに一致します。いくつかのテスト:
matches(pattern,{a:1,b:3,c:2}) == false // because b != 2
matches(pattern,{a:1,b:2,c:7}) == false // because c >= 5
matches(pattern,{a:1,b:2,c:3}) == true //fine
matches(pattern,{a:1,b:2,c:2,d:4}) == true //no problems in having extras
一連のパターンがあり、オブジェクトがそれらのパターンのいずれかに一致するかどうかを調べたいとします。1つずつ確認することもできますが、このように、複雑さはO(n)になります。ここで、nはパターンの数です。パターンのセットを使用して他の構造を構築すると、これを最適化できると感じています。しかし、その構造がどうなるかはわかりません。考え?