2016-06-24 2 views
0

mit Erlang Ets, wie kann Match Teil des Schlüssels?Erlang ETS Match

für exmaple, ets:insert(time_tb,{ {un_known,{<<"knonw_1">>,<<"knonw_2">>} },[data]}).

der Schlüssel wurde {un_known,{<<"knonw_1">>,<<"knonw_2">>}

Wie kann ich aus der Tabelle übereinstimmen nur, wenn ich weiß, {<<"knonw_1">>,<<"knonw_2">>} ist das möglich?

Antwort

1

Wenn ich richtig verstanden habe, keine notwendige Verwendung Funktion übereinstimmen. Sie können dies mit den Funktionen ets:select und est:fun2ms ausführen, um die Übereinstimmungsspezifikationen zu vereinfachen.

R=ets:fun2ms(fun(Data={{_,T},_}) when T =:= {<<"knonw_1">>,<<"knonw_2">>}->Data end). 
ets:select(time_tb,R). 

und erhalten:

[{{un_known,{<<"knonw_1">>,<<"knonw_2">>}},[data]}] 
+0

Dank. Es klappt – user3644708