Erlang Fun

Fun用于在Erlang中定義匿名函數(shù)。匿名函數(shù)的一般語(yǔ)法如下:

語(yǔ)法

F = fun (Arg1, Arg2, ... ArgN) ->
   ...
End

說(shuō)明

  • F ?這是分配給匿名函數(shù)的變量名。

  • Arg1, Arg2, ... ArgN ?這些是傳遞給匿名函數(shù)的參數(shù)。

以下示例展示了如何使用匿名函數(shù)。

實(shí)例

-module(helloworld). 
-export([start/0]). 

start() -> 
   A = fun() -> io:fwrite("Hello") end, 
   A().

關(guān)于上述程序,需要注意以下幾點(diǎn)。

  • 匿名函數(shù)被分配給變量A。

  • 通過(guò)變量的匿名函數(shù)A()。

當(dāng)我們運(yùn)行上面的程序時(shí),我們將得到以下結(jié)果。

“Hello”

匿名函數(shù)的另一個(gè)示例如下,但這是使用參數(shù)的。

-module(helloworld). 
-export([start/0]). 

start() -> 
   A = fun(X) -> 
      io:fwrite("~p~n",[X]) 
      end, 
   A(5).

當(dāng)我們運(yùn)行上面的程序時(shí),我們將得到以下結(jié)果。

輸出

5

使用變量

匿名函數(shù)具有訪問(wèn)匿名函數(shù)范圍之外的變量的能力。讓我們看一個(gè)實(shí)例-

實(shí)例

-module(helloworld). 
-export([start/0]). 

start() -> 
   B = 6, 
   A = fun(X) -> 
      io:fwrite("~p~n",[X]), 
      io:fwrite("~p~n",[B]) 
      end, 
   A(5).

關(guān)于上述程序,需要注意以下幾點(diǎn)。

  • 變量B在匿名函數(shù)的范圍之外。

  • 匿名函數(shù)仍然可以訪問(wèn)在全局范圍內(nèi)定義的變量。

當(dāng)我們運(yùn)行上面的程序時(shí),我們將得到以下結(jié)果。

輸出

5
6

函數(shù)中的函數(shù)

高階函數(shù)的另一個(gè)最強(qiáng)大的方面之一是,您可以在函數(shù)中定義一個(gè)函數(shù)。讓我們來(lái)看一個(gè)如何實(shí)現(xiàn)此目標(biāo)的示例。

實(shí)例

-module(helloworld). 
-export([start/0]). 

start() -> 
   Adder = fun(X) -> fun(Y) -> io:fwrite("~p~n",[X + Y]) end end, 
   A = Adder(6), 
   A(10).

關(guān)于上述程序,需要注意以下幾點(diǎn)。

  • 加法器是一個(gè)高階函數(shù),定義為fun(X)。

  • 加法器函數(shù)fun(X)引用了另一個(gè)函數(shù)fun(Y)。

當(dāng)我們運(yùn)行上面的程序時(shí),我們將得到以下結(jié)果。

輸出

16
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清