gpt4 book ai didi

erlang - 匹配规范只能用于跟踪和从 ets 表中选择吗?可以在 case 表达式中使用它们吗?

转载 作者:行者123 更新时间:2023-12-01 09:35:05 24 4
gpt4 key购买 nike

有没有办法使用匹配规范在函数的不同子句之间进行选择?我见过匹配规范仅用于跟踪或匹配 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(First)、is_pid(Second)、is_atom(Third)。

有没有办法让我生成这样的代码:

case some_unknown_function(MatchSpec, F1Args) of
true ->
%% f1's clause matches the MatchSpec
;
false ->
%% f1's clause does not match the MatchSpec
end.

任何帮助将不胜感激。谢谢。

最佳答案

看看ets:match_spec_compile/1ets:match_spec_run/2 ,他们完全按照您的意愿行事。

关于erlang - 匹配规范只能用于跟踪和从 ets 表中选择吗?可以在 case 表达式中使用它们吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9589410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com