2017-01-13 6 views
0

У меня есть таблица ETs форматированный, как показано нижеИзвлечение значения из ЭТС: поиск() - Erlang

ets:new(players, [set,named_table]) 

Данные, которые занесены в таблицу это имя игроков и их возраст.

Это в формате [{имя, возраст}]

Я сделал функцию, чтобы попытаться получить возраст игроков и возраст только.

getPlayerAge(PlayerName)-> 
    Player = ets:lookup(players,PlayerName), 
    [{_,Age}] = Player, 
    Age. 

Я получаю ошибку badmatch и, честно говоря, я смущен как ад.

Можно ли это сделать, или я ушел?

ответ

1

Предположительно точная ошибка это одна:

{badmatch, []} 

То есть, значение, которое вы получили от ets:lookup является [], пустой список, и что не соответствует шаблону [{_,Age}]. ets:lookup возвращает пустой список, если он не находит элемент с заданным ключом. Вы можете проверить, что таблица фактически содержит то, что вы ожидаете от нее, путем вызова ets:tab2list(players) и проверки возвращаемого значения.

+0

Да, я сделал это, и возвращаемое значение [{{player, age}}] – Fendec

+0

@ Deckster711 Аэ, элемент таблицы завернут в дополнительный кортеж. Как выглядит ваш 'ets: insert'? – legoscia

 Смежные вопросы

  • Нет связанных вопросов^_^