在 Erlang 中指定基于元数的方法

Specifying method based on arity in Erlang

我有一个 Erlang 模块导出两个名称相同但元数不同的方法:proc/1proc/2.

使用MFA形式的方法时,如何指定是/2还是/1?参见示例:

spawn(?MODULE,proc,[22])  % how to tell i want the `/1` arity  method
spawn(?MODULE,proc,[11,22]) % `/2`arity method

参数列表中的元素数量指定您使用的是 /1 还是 /2:

1> apply(lists, reverse, [[a, b, c]]).
[c,b,a]
2> apply(lists, reverse, [[a, b, c], [tail1, tail2]]).
[c,b,a,tail1,tail2]
3> length([[a, b, c]]).
1
4> length([[a, b, c], [tail1, tail2]]).
2

这里我用的是apply/3,用Module:Function:Args的格式先调用reverse/1,再调用reverse/2