Erlang - Fungsi

Erlang dikenal sebagai bahasa pemrograman fungsional, oleh karena itu Anda akan melihat banyak penekanan pada cara kerja fungsi di Erlang. Bab ini membahas semua yang dapat dilakukan dengan fungsi di Erlang.

Mendefinisikan Fungsi

Sintaks dari deklarasi fungsi adalah sebagai berikut -

Sintaksis

FunctionName(Pattern1… PatternN) ->
Body;

Dimana,

  • FunctionName - Nama fungsinya adalah atom.

  • Pattern1… PatternN- Setiap argumen adalah sebuah pola. Banyaknya argumen N adalah arity dari fungsinya. Suatu fungsi secara unik ditentukan oleh nama modul, nama fungsi, dan arity. Artinya, dua fungsi dengan nama yang sama dan dalam modul yang sama, tetapi dengan aritas yang berbeda adalah dua fungsi yang berbeda.

  • Body - Badan klausa terdiri dari urutan ekspresi yang dipisahkan oleh koma (,):

Program berikut adalah contoh sederhana dari penggunaan fungsi -

Contoh

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

add(X,Y) -> 
   Z = X+Y, 
   io:fwrite("~w~n",[Z]). 
   
start() -> 
   add(5,6).

Petunjuk berikut harus diperhatikan tentang program di atas -

  • Kami mendefinisikan dua fungsi, yang satu disebut add yang mengambil 2 parameter dan yang lainnya adalah start fungsi.

  • Kedua fungsi tersebut ditentukan dengan fungsi ekspor. Jika kita tidak melakukan ini, kita tidak akan bisa menggunakan fungsinya.

  • Satu fungsi bisa dipanggil di dalam fungsi lainnya. Di sini kita memanggil fungsi add dari fungsi start.

Output dari program di atas adalah -

Keluaran

11

Fungsi Anonim

Fungsi anonim adalah fungsi yang tidak memiliki nama yang terkait dengannya. Erlang memiliki fasilitas untuk mendefinisikan fungsi anonim. Program berikut adalah contoh dari fungsi anonim.

Contoh

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

start() -> 
   Fn = fun() -> 
      io:fwrite("Anonymous Function") end, 
   Fn().

Poin-poin berikut perlu diperhatikan tentang contoh di atas -

  • Fungsi anonim didefinisikan dengan fun() kata kunci.

  • Fungsi ditetapkan ke variabel yang disebut Fn.

  • Fungsi ini dipanggil melalui nama variabel.

Output dari program di atas adalah -

Keluaran

Anonymous Function

Fungsi dengan Banyak Argumen

Fungsi erlang dapat didefinisikan dengan nol atau lebih parameter. Fungsi overloading juga dimungkinkan, dimana Anda dapat mendefinisikan sebuah fungsi dengan nama yang sama beberapa kali, selama mereka memiliki jumlah parameter yang berbeda.

Dalam contoh berikut, demo fungsi ditentukan dengan beberapa argumen untuk setiap definisi fungsi.

Contoh

-module(helloworld). 
-export([add/2,add/3,start/0]). 

add(X,Y) -> 
   Z = X+Y, 
   io:fwrite("~w~n",[Z]). 
   
add(X,Y,Z) -> 
   A = X+Y+Z, 
   io:fwrite("~w~n",[A]). 
 
start() ->
   add(5,6), 
   add(5,6,6).

Dalam program di atas, kita mendefinisikan fungsi add dua kali. Tetapi definisi dari fungsi add pertama mengambil dua parameter dan yang kedua mengambil tiga parameter.

Output dari program di atas adalah -

Keluaran

11
17

Fungsi dengan Urutan Penjaga

Fungsi di Erlang juga memiliki kemampuan untuk memiliki urutan penjaga. Ini hanyalah ekspresi yang hanya jika dievaluasi ke true akan menyebabkan fungsi berjalan.

Sintaks dari suatu fungsi dengan urutan pelindung ditunjukkan pada program berikut.

Sintaksis

FunctionName(Pattern1… PatternN) [when GuardSeq1]->
Body;

Dimana,

  • FunctionName - Nama fungsinya adalah atom.

  • Pattern1… PatternN- Setiap argumen adalah sebuah pola. Banyaknya argumen N adalah arity dari fungsinya. Suatu fungsi secara unik ditentukan oleh nama modul, nama fungsi, dan arity. Artinya, dua fungsi dengan nama yang sama dan dalam modul yang sama, tetapi dengan aritas yang berbeda adalah dua fungsi yang berbeda.

  • Body - Badan klausa terdiri dari urutan ekspresi yang dipisahkan oleh koma (,).

  • GuardSeq1 - Ini adalah ekspresi yang dievaluasi saat fungsi dipanggil.

Program berikut adalah contoh sederhana penggunaan fungsi dengan urutan penjaga.

Contoh

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

add(X) when X>3 -> 
   io:fwrite("~w~n",[X]). 

start() -> 
   add(4).

Output dari program diatas adalah -

Keluaran

4

Jika fungsi tambah disebut sebagai add(3), program akan menghasilkan kesalahan.