- 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
廣告