И для решения этой задачи в соответствии со спецификацией соответствия, если QLC измеряется как недостаточно эффективный.
> ets:fun2ms(fun ({_,X}=E) when X == a -> E end).
[{{'_','$1'},[{'==','$1',a}],['$_']}]
ets: fun2ms - это преобразование, которое может преобразовать some приколы в значениях matchspec.Я использую это как быстрый способ получить спичку, которую я хочу.Мы получаем список с соответствием, который находит кортеж с вторым элементом.Мы можем повторить это для других ключей.
Итак, давайте заполним таблицу ets чем-то, чтобы попробовать это, а затем создадим matchspec, который соответствует только элементам со вторым элементом как 'a' или 'c'.(Я ввожу это
ets:new(foo, [named_table]).
ets:insert(foo, [{1,a},{2,b},{3,c},{4,d}]).
Vs = [a,c].
MS = [{{'_','$1'},[{'==','$1',V}],['$_']} || V <- Vs].
ets:select(foo, MS).
Когда я запускаю это, я получаю:
[{1,a},{3,c}]