有没有办法使用匹配规范在函数的不同子句之间进行选择?我已经看到匹配规范仅用于跟踪或匹配ets表中的条目。
我想做的例子:
在用户提供的文件中:
Module(m1),
Function(f1),
Guard([ %% list of match specifications follows:
%% First (and only in this case) match spec:
{ [{score, '$1', '$2', '$3'}, '$4'],
[{is_atom, '$1'}, {is_pid, '$2'}, {is_atom, '$3'}],
[true] }
]).
从这个文件中我想生成代码。对我来说重要的是能够使用Guard中的匹配规范来过滤出f1的子句,这样我就可以知道f1的第一个参数何时是形式的元组{score,First,Second,第三个}和is_atom(第一个),is_pid(第二个),is_atom(第三个)。
我有办法生成这样的代码:
case some_unknown_function(MatchSpec, F1Args) of
true ->
%% f1's clause matches the MatchSpec
;
false ->
%% f1's clause does not match the MatchSpec
end.
非常感谢任何帮助。感谢。