Извлечение значения из ets:lookup() - Erlang
У меня есть таблица ETS отформатирована как показано ниже
ets:new(players, [set,named_table])
Данные, которые заносятся в таблицу, - это имя игрока и его возраст.
Это в формате [{Имя, Возраст}]
Я сделал функцию, чтобы попытаться получить игроков только возраст и возраст.
getPlayerAge(PlayerName)->
Player = ets:lookup(players,PlayerName),
[{_,Age}] = Player,
Age.
Я получаю ошибку несоответствия и, честно говоря, я запутался до чертиков.
Это может быть сделано, или я далеко?
1 ответ
Решение
Предположительно точная ошибка заключается в следующем:
{badmatch, []}
То есть ценность, которую вы получили от ets:lookup
является []
пустой список, и это не соответствует шаблону [{_,Age}]
, ets:lookup
возвращает пустой список, если не найден элемент с данным ключом. Вы можете проверить, что таблица содержит то, что вы ожидаете, вызвав ets:tab2list(players)
и проверка возвращаемого значения.