从 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:从 shell 执行 erl 命令

如何在erl中为单个标志设置多个命令行参数

erl 程序输出的值与 erlang shell 输出的值不同

Erlang:从命令行调用 erl -eval 永远不会退出

将命令传递给erl?