代码之家  ›  专栏  ›  技术社区  ›  Dawid

Erlang中函数参数列表的可变长度

  •  8
  • Dawid  · 技术社区  · 16 年前

    我知道我可以写:

    function() -> function([]).
    function(X) when not is_list(X) -> function([X]);
    function(X) -> do_something_with_arguments(X).
    

    但我想避免使用这种技术。

    2 回复  |  直到 16 年前
        1
  •  9
  •   jldupont    16 年前

    一种方法是在列表中传递所有参数:

    function(ListOfParameters)

    然后你可以在上面迭代 ListOfParameters vararg 参数列表?如果是肯定的,请阅读下一段。

    您必须记住Erlang是基于模式匹配的。调用函数时,函数“声明”中的参数充当匹配模式。你必须 为了充分利用Erlang的力量。

        2
  •  9
  •   rvirding    16 年前

    这并不是说它没有被实现,而是在具有相同名称但参数数量不同的Erlang函数中被认为是不同的函数,因此不能添加它。