列表:keyfind问题

时间:2010-06-15 23:09:17

标签: erlang

我不能为我的生活获取清单:keyfind在Erlang中按预期工作。

我有以下eunit测试:

should_find_key_test() ->
    NewList = lists:keystore("key", 1, [], {"key", "value"}),
    Value = case lists:keyfind("key", 1, NewList) of
        false ->
            notfound;
        {_key, _value} ->
            _value
    end,
    ?debugVal(Value).

每当我运行此测试时,都会收到以下错误消息:

indextests:should_find_key_test(模块'indextests')... 失败 ::错误:UNDEF   在函数列表中:keyfind / 3     称为keyfind(“key”,1,[{“key”,“value”}])   来自indextests的调用:should_find_key_test / 0

谁能看到我做错了什么?

是不是说列表:keyfind不再存在?

1 个答案:

答案 0 :(得分:3)

列出:在OTP / R13A中引入了keyfind / 3。我怀疑你使用的是旧版本..在R13A之前你会使用列表:serachkey / 3。找到了相同的元组,但返回的数据结构略有不同。

should_find_key_test() ->
    NewList = lists:keystore("key", 1, [], {"key", "value"}),
    Value = case lists:keysearch("key", 1, NewList) of
        false ->
            notfound;
        {value {_Key, _Value}} ->
            _Value
    end,
    ?debugVal(Value).

release notes显示在STDLIB 1.6版中添加的keyfind / 3 BIF。检查您的STDLIB版本。