从 ets:lookup() 中提取值 - Erlang
Posted
技术标签:
【中文标题】从 ets:lookup() 中提取值 - Erlang【英文标题】:Extracting a value from an ets:lookup() - Erlang 【发布时间】:2017-05-29 10:00:00 【问题描述】:我有一个格式如下的 ets 表
ets:new(players, [set,named_table])
放入表中的数据是球员姓名和年龄。
格式为 [Name,Age]
我做了一个函数来尝试获取玩家的年龄和年龄。
getPlayerAge(PlayerName)->
Player = ets:lookup(players,PlayerName),
[_,Age] = Player,
Age.
我遇到了一个错误匹配错误,老实说,我很困惑。
这可以做到吗?还是我走远了?
【问题讨论】:
【参考方案1】:大概确切的错误是这个:
badmatch, []
也就是说,您从ets:lookup
获得的值是[]
,这是一个空列表,并且与模式[_,Age]
不匹配。 ets:lookup
如果没有找到具有给定键的元素,则返回一个空列表。您可以通过调用 ets:tab2list(players)
并检查返回值来检查该表是否实际包含您期望它包含的内容。
【讨论】:
是的,我已经这样做了,返回值为 [player,age] @Deckster711 啊,表格元素被包裹在一个额外的元组中。你的ets:insert
是什么样的?以上是关于从 ets:lookup() 中提取值 - Erlang的主要内容,如果未能解决你的问题,请参考以下文章
从 bash 变量为 Erlang erl 传递 -eval 失败
erl 程序输出的值与 erlang shell 输出的值不同