如果我正在编写一个传递另一个函数的函数,有没有办法检查我传递的函数的arity,或者模式匹配不同的arities?我可以使用is_function/2来检查特定的arities,但这将是一个获取数字的尴尬方式.
你可以用:erlang.fun_info/1
; 它返回一堆关于给定函数的信息,包括它的arity:
iex> :erlang.fun_info(fn -> :ok end)[:arity] 0 iex> :erlang.fun_info(fn(_, _, _) -> :ok end)[:arity] 3
正如我链接的文档所说,此函数主要用于调试目的,但它可用于确定函数的arity.