Извлечение значения из 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) и проверка возвращаемого значения.

Другие вопросы по тегам