Lua - Funzioni

Una funzione è un gruppo di istruzioni che insieme eseguono un'attività. Puoi dividere il tuo codice in funzioni separate. Come suddividere il codice tra le diverse funzioni dipende da te, ma logicamente la divisione di solito è unica, quindi ogni funzione esegue un compito specifico.

Il linguaggio Lua fornisce numerosi metodi incorporati che il tuo programma può chiamare. Ad esempio, metodoprint() per stampare l'argomento passato come input nella console.

Una funzione è nota con vari nomi come un metodo, una sub-routine o una procedura, ecc.

Definizione di una funzione

La forma generale della definizione di un metodo nel linguaggio di programmazione Lua è la seguente:

optional_function_scope function function_name( argument1, argument2, argument3........, 
argumentn)
function_body
return result_params_comma_separated
end

Una definizione di metodo nel linguaggio di programmazione Lua consiste in un'intestazione del metodo e un corpo del metodo . Ecco tutte le parti di un metodo:

  • Optional Function Scope- È possibile utilizzare la parola chiave local per limitare l'ambito della funzione o ignorare la sezione dell'ambito, che la renderà una funzione globale.

  • Function Name- Questo è il nome effettivo della funzione. Il nome della funzione e l'elenco dei parametri insieme costituiscono la firma della funzione.

  • Arguments- Un argomento è come un segnaposto. Quando viene richiamata una funzione, si passa un valore all'argomento. Questo valore viene indicato come parametro o argomento effettivo. L'elenco dei parametri fa riferimento al tipo, all'ordine e al numero degli argomenti di un metodo. Gli argomenti sono facoltativi; ovvero, un metodo non può contenere argomenti.

  • Function Body - Il corpo del metodo contiene una raccolta di istruzioni che definiscono ciò che fa il metodo.

  • Return - In Lua, è possibile restituire più valori seguendo la parola chiave return con i valori di ritorno separati da virgole.

Esempio

Di seguito è riportato il codice sorgente di una funzione chiamata max(). Questa funzione accetta due parametri num1 e num2 e restituisce il massimo tra i due -

--[[ function returning the max between two numbers --]]
function max(num1, num2)

   if (num1 > num2) then
      result = num1;
   else
      result = num2;
   end

   return result; 
end

Argomenti della funzione

Se una funzione deve utilizzare argomenti, deve dichiarare le variabili che accettano i valori degli argomenti. Queste variabili sono chiamateformal parameters della funzione.

I parametri formali si comportano come le altre variabili locali all'interno della funzione e vengono creati all'ingresso nella funzione e distrutti all'uscita.

Chiamare una funzione

Durante la creazione di una funzione Lua, dai una definizione di ciò che la funzione deve fare. Per utilizzare un metodo, dovrai chiamare quella funzione per eseguire l'attività definita.

Quando un programma chiama una funzione, il controllo del programma viene trasferito alla funzione chiamata. Una funzione chiamata esegue l'attività definita e quando viene eseguita la sua istruzione return o quando viene raggiunta la fine della sua funzione, restituisce il controllo del programma al programma principale.

Per chiamare un metodo, è sufficiente passare i parametri richiesti insieme al nome del metodo e se il metodo restituisce un valore, è possibile memorizzare il valore restituito. Ad esempio:

function max(num1, num2)

   if (num1 > num2) then
      result = num1;
   else
      result = num2;
   end

   return result; 
end

-- calling a function
print("The maximum of the two numbers is ",max(10,4))
print("The maximum of the two numbers is ",max(5,6))

Quando eseguiamo il codice sopra, otterremo il seguente output.

The maximum of the two numbers is 	10
The maximum of the two numbers is 	6

Assegnazione e passaggio di funzioni

In Lua, possiamo assegnare la funzione a variabili e anche passarle come parametri di un'altra funzione. Ecco un semplice esempio per assegnare e passare una funzione come parametro in Lua.

myprint = function(param)
   print("This is my print function -   ##",param,"##")
end

function add(num1,num2,functionPrint)
   result = num1 + num2
   functionPrint(result)
end

myprint(10)
add(2,5,myprint)

Quando eseguiamo il codice sopra, otterremo il seguente output.

This is my print function -   ##	10	##
This is my print function -   ##	7	##

Funzione con argomento variabile

È possibile creare funzioni con argomenti variabili in Lua utilizzando "..." come parametro. Possiamo avere un'idea di ciò vedendo un esempio in cui la funzione restituirà la media e può accettare argomenti variabili.

function average(...)
   result = 0
   local arg = {...}
   for i,v in ipairs(arg) do
      result = result + v
   end
   return result/#arg
end

print("The average is",average(10,5,3,4,5,6))

Quando eseguiamo il codice sopra, otterremo il seguente output.

The average is	5.5