Erlang:异常的case_lause崩溃



在测试Erlang程序时,我遇到了一个非常不寻常的case_clause匹配失败。

createPattern(PatternId, Analyzer, PatternDesc) when is_list(PatternDesc) -> 
F = fun() ->
case mnesia:wread({patterns, PatternId}) of
[] ->
mnesia:write(#patterns{pattern_id = PatternId, analyzer = Analyzer, pattern_desc = PatternDesc}),
{?RESULT_PASSED, ?REASON_CREATED};
_ -> {?RESULT_FAILED, ?REASON_EXISTS}
end
end,
case Analyzer of
{script, ScriptName} -> 
case io_lib:latin1_char_list(ScriptName) of 
true -> ok 
end;
{erlang, {M, F}} ->
case utils:loadModule(M, F, 2) of 
{?RESULT_PASSED, _} -> ok
end;

{expression, Expression} -> 
utils:screenExpression(Expression);
{expression_group, ExpressionGroup} -> 
utils:screenExpressionGroup(ExpressionGroup)
end,

mnesia:activity(transaction, F).

我正在传递值为{erlang,{plugin,evaluate}}的Analyzer。我的手机死机了。当我用{erlang,{Module,Function}}替换{erlang,{M,F}}时,匹配成功了。

现在这是不寻常的,因为模式是相同的,并且M和F之前没有声明。所以它应该匹配。

我在跑二郎23。我在这里错过了什么?

谢谢。

实际上,您以前确实将F定义为函数(见下文(。也许你想从那开始。

F = fun() ->

相关内容

  • 没有找到相关文章

最新更新