【问题标题】:The function with different count of parameters具有不同参数计数的函数
【发布时间】:2011-06-22 19:59:48
【问题描述】:

我只是想知道是否有任何方法可以创建具有不同参数数量的相同函数?像这样的:

sum_of_n(Num)->
    sum_of_n(Num, 0);
sum_of_n(0, Accum)->
    Accum;
sum_of_n(Num, Accum) ->
    sum_of_n(Num - 1, Accum + Num).

正如我所见,Erlang 不允许同时使用一个和两个参数创建函数。有没有创建此类功能的好方法,或者我需要使用两个不同的功能?

【问题讨论】:

    标签: erlang


    【解决方案1】:

    你快到了!

    如果有相同的arity(参数数量),您只能使用; 继续函数头。您可以愉快地拥有名称相同但元数不同的函数 - 只需使用 . 来终止每个元数块:

    sum_of_n(Num)->
        sum_of_n(Num, 0).
    
    sum_of_n(0, Accum)->
        Accum;
    sum_of_n(Num, Accum) ->
        sum_of_n(Num - 1, Accum + Num).
    

    【讨论】:

    • 正确。在 Erlang 中,一个函数不仅通过它的名字来识别,而且通过它的名字和它的参数数量(arity)来识别。
    【解决方案2】:

    你可以有两个不同的函数,名字相同,但参数个数不同:

    sum_of_n(Num)->
        sum_of_n(Num, 0). %% Note the period
    
    sum_of_n(0, Accum)->
        Accum;
    sum_of_n(Num, Accum) ->
        sum_of_n(Num - 1, Accum + Num).
    

    exportfun等中,您可以将它们称为FunName/NumberOfArgs,例如

    -export([sum_of_n/1]).
    

    【讨论】:

      【解决方案3】:

      通过本教程,您将对 Erlang 中的许多事情有把握。

      <b>@987654321@</b>

      【讨论】:

        猜你喜欢
        • 2019-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-07
        • 2021-03-05
        相关资源
        最近更新 更多