我有一个有这个记录的桌子人员:
-record(person, {id, firstname, lastname, address}).
我想开发一个函数,它将检索此表的最后一个id
我尝试使用此功能:
get_userId() ->
Q = qlc:q([{X#person.id} || X <- mnesia:table(person)
]),
case do(Q) of
[{H}] ->
{ok, H};
[] ->
{error, notfound}
end.
我使用此代码进行测试
test()->
case get_userId() of
{ok, H}->io:format("~s~n",[H]);
[] ->
{error, notfound}
end.
但我在进行测试时遇到错误
2> model:test().
** exception error: no case clause matching [{238},
{82},
{76},
{257},
{141},
{2},
{315},
{336},
{275},
{88},
{326},
{211},
{81},
{333},
{351},
{214},
{64},
{265},
{210},
{90},
{302},
{98},
{212},
{197},
{194},
{132},
{226},
{3},
{...}|...]
in function model:get_userId/0
in call from model:test/0
答案 0 :(得分:1)
问题是从do(Q)
返回的值是包含许多元素的列表。您会在错误报告中看到它们。但是,与此值匹配的模式仅匹配带有一个元素的列表[{H}]
,没有元素的列表,空列表[]
。因此,如果没有任何子句匹配,则会出现case_clause
错误。