ets:match に問題があります。次のコードでは、ets:match が 1 つの見つかった値を返すことを期待していますが、何も返されません。なんで ?
1> T = ets:new(xxx, []).
16400
2> ets:insert(T, {a, b, c, d}).
true
3> ets:match(T, {'_', '_', '_', '_'}).
[[]]
代わりにets:match_object/2が必要になるでしょう:
> ets:match_object(T, {'_', '_', '_', '_'}).
[{a,b,c,d}]
ets:match/2を使用する場合、パターンには など'$1'
のアトムを含める必要があります'$2'
。結果はリストのリストになります。各サブリストには、マジック アトムによって指定された順序で対応する要素が含まれます。たとえば、最後の 3 つの要素を逆の順序で取得するには、次のようにします。
> ets:match(T, {'_', '$3', '$2', '$1'}).
[[d,c,b]]
マッチでそのようなアトムを使用しなかったため、マッチごとにゼロ要素が返されます。したがって、1 つの空のリストを含むリスト[[]]
.