Erlang - Kesenangan

Hiburan digunakan untuk mendefinisikan fungsi anonim di Erlang. Sintaks umum dari fungsi anonim diberikan di bawah ini -

Sintaksis

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

Dimana

  • F - Ini adalah nama variabel yang ditetapkan ke fungsi anonim.

  • Arg1, Arg2, ... ArgN - Ini adalah argumen yang diteruskan ke fungsi anonim.

Contoh berikut menunjukkan bagaimana fungsi anonim dapat digunakan.

Contoh

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

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

Hal-hal berikut perlu diperhatikan tentang program di atas.

  • Fungsi anonim diberikan ke variabel A.

  • Fungsi anonim melalui variabel A ().

Saat kita menjalankan program diatas kita akan mendapatkan hasil sebagai berikut.

“Hello”

Contoh lain dari fungsi anonim adalah sebagai berikut, tetapi ini dengan penggunaan parameter.

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

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

Saat kita menjalankan program diatas kita akan mendapatkan hasil sebagai berikut.

Keluaran

5

Menggunakan Variabel

Fungsi Anonymous memiliki kemampuan untuk mengakses variabel yang berada di luar lingkup fungsi anonim. Mari kita lihat contohnya -

Contoh

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

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

Hal-hal berikut perlu diperhatikan tentang program di atas.

  • Variabel B berada di luar cakupan fungsi anonim.

  • Fungsi anonim masih dapat mengakses variabel yang ditentukan dalam cakupan global.

Saat kita menjalankan program diatas kita akan mendapatkan hasil sebagai berikut.

Keluaran

5
6

Fungsi dalam Fungsi

Salah satu aspek terkuat lainnya dari fungsi tingkat tinggi, adalah Anda dapat menentukan fungsi di dalam suatu fungsi. Mari kita lihat contoh bagaimana kita bisa mencapai ini.

Contoh

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

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

Hal-hal berikut perlu diperhatikan tentang program di atas.

  • Adder adalah fungsi tingkat tinggi yang didefinisikan sebagai kesenangan (X).

  • Kesenangan fungsi Adder (X) memiliki referensi ke kesenangan fungsi lain (Y).

Saat kita menjalankan program diatas kita akan mendapatkan hasil sebagai berikut.

Keluaran

16