N
Size: a a a
N
T
N
T
AM
Е
YZ
Е
Е
Aß
Е
EB
Е
{grp1, val1}
{grp1, val2}
...
{grp1, valN}
{grp2, val1}
{grp2, val2}
...
{grp2, valN}
...
{grpN, valN}
Если предположить, что идентификаторы членов группы - это целые, то мы можем легко получить список идентификаторов групп, следующим образом:def get_groups(table), do: get_groups(table, :ets.first(table), [])Обратите внимание на
def get_groups(_, :"$end_of_table", result), do: result
def get_groups(table, {group_id, _}, result) do
next_id = :ets.next(table, {group_id, :infinity})
get_groups(table, next_id, [group_id | result])
end
next_id = :ets.next(table, {group_id, :infinity})
Тут мы используем :infinity, чтобы "прыгнуть" к первому элементу следующей группы. Так как :infinity больше любого целого.Е
:infinity нет.{grp1, {val1}}
и использовать вместо :infinity, все что угодно больше кортежа, например пустую строку.AS
SZ
DR
SZ

DR