Erlang - Moduli

I moduli sono un insieme di funzioni raggruppate in un unico file, sotto un unico nome. Inoltre, tutte le funzioni in Erlang devono essere definite nei moduli.

La maggior parte delle funzionalità di base come gli operatori aritmetici, logici e booleani sono già disponibili perché i moduli predefiniti vengono caricati quando viene eseguito un programma. Ogni altra funzione definita in un modulo che userete mai deve essere chiamata con il formModule:Function (Argomenti).

Definizione di un modulo

Con un modulo, puoi dichiarare due tipi di cose: funzioni e attributi. Gli attributi sono metadati che descrivono il modulo stesso come il suo nome, le funzioni che dovrebbero essere visibili al mondo esterno, l'autore del codice e così via. Questo tipo di metadati è utile perché fornisce suggerimenti al compilatore su come dovrebbe svolgere il suo lavoro, e anche perché consente alle persone di recuperare informazioni utili dal codice compilato senza dover consultare la fonte.

La sintassi di una dichiarazione di funzione è la seguente:

Sintassi

-module(modulename)

Dove, modulenameè il nome del modulo. Questa deve essere la prima riga del codice nel modulo.

Il seguente programma mostra un esempio di un modulo chiamato helloworld.

Esempio

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

start() -> 
   io:fwrite("Hello World").

L'output del programma di cui sopra è:

Produzione

Hello World

Attributi del modulo

Un attributo del modulo definisce una certa proprietà di un modulo. Un attributo del modulo è costituito da un tag e un valore.

La sintassi generale di un attributo è:

Sintassi

-Tag(Value)

Un esempio di come l'attributo può essere utilizzato è mostrato nel seguente programma:

Esempio

-module(helloworld). 
-author("TutorialPoint"). 
-version("1.0"). 
-export([start/0]). 

start() -> 
   io:fwrite("Hello World").

Il programma precedente definisce 2 attributi personalizzati chiamati autore e versione che contengono rispettivamente l'autore del programma e il numero di versione del programma.

L'output del programma di cui sopra è:

Produzione

Hello World

Attributi predefiniti

Erlang ha alcuni attributi predefiniti che possono essere allegati ai moduli. Diamo un'occhiata a loro.

Esportare

L'attributo export richiederà un elenco di funzioni e arità da esportare per il consumo da parte di altri moduli. Definirà l'interfaccia del modulo. Lo abbiamo già visto in tutti i nostri esempi precedenti.

Sintassi

export([FunctionName1/FunctionArity1,.,FunctionNameN/FunctionArityN])

Dove,

  • FunctionName - Questo è il nome della funzione nel programma.

  • FunctionArity - Questo è il numero di parametri associati alla funzione.

Esempio

-module(helloworld). 
-author("TutorialPoint"). 
-version("1.0"). 
-export([start/0]). 

start() -> 
   io:fwrite("Hello World").

L'output del programma di cui sopra sarà:

Produzione

Hello World

Importare

L'attributo import viene utilizzato per importare funzioni da un altro modulo per utilizzarlo come locale.

Sintassi

-import (modulename , [functionname/parameter]).

Dove,

  • Modulename - Questo è il nome del modulo che deve essere importato.

  • functionname/parameter - la funzione nel modulo che deve essere importata.

Esempio

-module(helloworld). 
-import(io,[fwrite/1]). 
-export([start/0]). 

start() -> 
   fwrite("Hello, world!\n").

Nel codice sopra, stiamo usando la parola chiave import per importare la libreria 'io' e in particolare la funzione fwrite. Quindi, ora ogni volta che invochiamo la funzione fwrite, non dobbiamo menzionare il nome del modulo io ovunque.

L'output del programma di cui sopra sarà:

Produzione

Hello, world!