Erlang匿名函数及函数的高阶应用

    Erlang 作为一种函数式编程语言,和其他的函数式编程语言一样具有lambda函数,在Erlang中也称为匿名函数,同时函数也可以赋值给变量或作为参数进行传递,此处对Erlang 中的匿名函数及级高阶应用作简要介绍。

    一、匿名函数

    Erlang 中匿名函数在定义时使用fun作为函数的名称,下图为一个基本的匿名函数的定义和使用:

    图中定义了一个匿名函数,并将其赋值给变量Double(函数式程序设计语言一般都可以实现),然后通过变量Double来调用函数即可。

    匿名函数也可以有多个子句,例如:

    上图中在交互式环境下定义了带有二个子句的匿名函数,然后分别使用不同的参数调用两次。注意:第二个子句不用写fun名称。

    二、将函数作为函数的参数调用

    在Erlang中虽然不能将模块中的函数直接作为另一个函数的参数,但可以通过匿名函数进行包装后传入另一个函数来进行调用。

    以下为lambfun模块的源代码:

%filename:lambfun.erl

-module(lambfun).
-compile(export_all).

double(X) ->
    X * 2.

triple(X) ->
    X * 3.

call(Funcall,X) ->
    Funcall(X).
    下图是在交互式环境下的运行结果:

    在成功编译之后,用匿名函数包括之后,分别赋值给F和F3变量,并通过call函数来调用实现了乘2和乘3操作。

    三、返回函数的函数

    使用匿名函数还可以实现让函数返回的不是数值,而一个函数,比如:

%filename highfun.erl

-module(highfun).
-compile(export_all).

multi(X,Y) ->
    X * Y.

double(X) ->
    fun(X) -> multi(2,X) end.
    函数double返回的是一个函数。在交互式环境下调用如下图所示:

    当调用highfun:double(5)函数时,返回的一个函数,然后绑定到Dbfun,之后再进行调用。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值