从 ets:lookup() 中提取值 - Erlang

Extracting a value from an ets:lookup() - Erlang

我有一个 ets table 格式如下

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

放入 table 的数据是球员姓名和年龄。

格式为[{姓名,年龄}]

我做了一个函数来尝试获取玩家的年龄和年龄。

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

我遇到了一个不匹配的错误,老实说我很困惑。

这可以完成还是我离题太远了?

大概是这个错误:

{badmatch, []}

也就是说,您从 ets:lookup 获得的值是 [],空列表,与模式 [{_,Age}] 不匹配。 ets:lookup return 如果找不到具有给定键的元素,则为空列表。您可以通过调用 ets:tab2list(players) 并检查 return 值来检查 table 是否确实包含您期望它包含的内容。