-3

我有一个有这个记录的表人:

-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
4

1 回答 1

1

问题是返回的值do(Q)是一个包含许多元素的列表。您会在错误报告中看到它们。但是,您仅匹配此值的模式将匹配具有一个元素[{H}]的列表,没有元素的列表,空列表[]。因此,您会收到一个case_clause错误,因为没有任何子句匹配。

于 2013-02-21T00:49:05.480 回答