- Erlang 教程
- Erlang - 首页
- Erlang - 概述
- Erlang - 环境
- Erlang - 基本语法
- Erlang - Shell
- Erlang - 数据类型
- Erlang - 变量
- Erlang - 运算符
- Erlang - 循环
- Erlang - 决策
- Erlang - 函数
- Erlang - 模块
- Erlang - 递归
- Erlang - 数字
- Erlang - 字符串
- Erlang - 列表
- Erlang - 文件 I/O
- Erlang - 原子
- Erlang - 映射
- Erlang - 元组
- Erlang - 记录
- Erlang - 异常
- Erlang - 宏
- Erlang - 头文件
- Erlang - 预处理器
- Erlang - 模式匹配
- Erlang - 守护
- Erlang - BIFS
- Erlang - 二进制
- Erlang - 匿名函数
- Erlang - 进程
- Erlang - 邮件
- Erlang - 数据库
- Erlang - 端口
- Erlang - 分布式编程
- Erlang - OTP
- Erlang - 并发
- Erlang - 性能
- Erlang - 驱动程序
- Erlang - Web 编程
- Erlang 有用资源
- Erlang - 快速指南
- Erlang - 有用资源
- Erlang - 讨论
Erlang - 匿名函数
匿名函数用于在 Erlang 中定义匿名函数。匿名函数的一般语法如下所示:
语法
F = fun (Arg1, Arg2, ... ArgN) -> ... End
其中
F − 这是分配给匿名函数的变量名。
Arg1, Arg2, ... ArgN − 这些是传递给匿名函数的参数。
以下示例展示了如何使用匿名函数。
示例
-module(helloworld). -export([start/0]). start() -> A = fun() -> io:fwrite("Hello") end, A().
关于以上程序,需要注意以下几点。
匿名函数被分配给变量 A。
通过变量 A() 调用匿名函数。
当我们运行以上程序时,我们将得到以下结果。
“Hello”
另一个匿名函数的例子如下,但这是使用参数的。
-module(helloworld). -export([start/0]). start() -> A = fun(X) -> io:fwrite("~p~n",[X]) end, A(5).
当我们运行以上程序时,我们将得到以下结果。
输出
5
使用变量
匿名函数能够访问超出匿名函数作用域的变量。让我们来看一个例子:
示例
-module(helloworld). -export([start/0]). start() -> B = 6, A = fun(X) -> io:fwrite("~p~n",[X]), io:fwrite("~p~n",[B]) end, A(5).
关于以上程序,需要注意以下几点。
变量 B 超出匿名函数的作用域。
匿名函数仍然可以访问全局作用域中定义的变量。
当我们运行以上程序时,我们将得到以下结果。
输出
5 6
函数内的函数
高阶函数的另一个最强大的方面是,您可以在函数内定义函数。让我们看看如何实现这一点。
示例
-module(helloworld). -export([start/0]). start() -> Adder = fun(X) -> fun(Y) -> io:fwrite("~p~n",[X + Y]) end end, A = Adder(6), A(10).
关于以上程序,需要注意以下几点。
Adder 是一个定义为 fun(X) 的高阶函数。
Adder 函数 fun(X) 引用了另一个函数 fun(Y)。
当我们运行以上程序时,我们将得到以下结果。
输出
16
广告