我不能为我的生活获取清单: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不再存在?
答案 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版本。