【问题标题】:Extracting a value from an ets:lookup() - Erlang从 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.

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

这可以做到吗?还是我走远了?

【问题讨论】:

    标签: function erlang tuples extract ets


    【解决方案1】:

    大概确切的错误是这个:

    {badmatch, []}
    

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

    【讨论】:

    • 是的,我已经这样做了,返回值为 [{{player,age}}]
    • @Deckster711 啊,表格元素被包裹在一个额外的元组中。你的ets:insert 是什么样的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 2018-04-07
    • 1970-01-01
    • 2015-12-08
    • 2016-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多