Erlang dialyzer创造的乐趣没有本地回报

0xA*_*xAX 8 erlang static-analysis

我为我的项目运行透析器.我有:

test.erl:97: The created fun has no local return
Run Code Online (Sandbox Code Playgroud)

在97行我有:

    List = lists:filter(fun(X) ->
                               {_, _, SomeBoolFlag} = X,
                               SomeBoolFlag == false
                        end,
                TestList)
Run Code Online (Sandbox Code Playgroud)

怎么了?

谢谢.

hdi*_*ima 11

似乎dialyzer已经发现TestList可以包含除{_, _, SomeBoolFlag}元组之外的其他内容.

而且你可以简化这段代码:

List = lists:filter(fun({_, _, Flag}) -> not Flag end, TestList)
Run Code Online (Sandbox Code Playgroud)

要么:

List = [Item || Item={_, _, false} <- TestList]
Run Code Online (Sandbox Code Playgroud)