在 Erlang 中指定基于元数的方法
Specifying method based on arity in Erlang
我有一个 Erlang
模块导出两个名称相同但元数不同的方法:proc/1
和 proc/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
。
我有一个 Erlang
模块导出两个名称相同但元数不同的方法:proc/1
和 proc/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
。