Una caratteristica importantissima di ogni linguaggio sono le funzioni, dei "pezzi" di codice che prendono in ingresso dei parametri e restituiscono dei risultati, o semplicemente elaborano delle informazioni senza restituire nulla.
In Hollywood le funzioni vengono dichiarate con il seguente schema:
Function nome_funzione(parametri)
...codice...
Return(risultati)
EndFunction
<
parametri> non sono obbligatori, una funzione può essere invocata anche senza parametri
<
Return(risultati)> questo comando si occupa di restituire i valori e ad uscire immediatamente dalla funzione, può anche essere utilizzato per uscire dalla funzione senza restituire nulla omettendo di specificare dei risultati
Piccolo esempio:
Function Add(a, b)
Return(a+b)
EndFunction
Ma, passiamo ad alcune caratteristiche più interessanti :ugeek:
------------------------------------------------------------------------
LE FUNZIONI SONO VARIABILIEsattamente: tutte le funzioni sono trattate come variabili all'interno di Hollywood, compresi i comandi interni di Hollywood. Ma cosa significa questo?
Prendiamo il comando
DebugPrint() che stampa una stringa sulla console, se io faccio:
DebugPrint("Ciao baldi giovani!")
Local myPrint = DebugPrint
myPrint("Che figata!")
Con l'assegnazione alla seconda riga abbiamo fatto si che la variabile <myPrint> sia diventata la funzione <DebugPrint>
Questo concetto apre molti orizzonti di programmazione, e qui darò solo un'idea di cosa si può fare con questo concetto.
Immaginiamo un programma che deve disegnare delle forme usando diverse tecniche di disegno, definiamo le funzioni che disegnano con queste diverse tecniche:
Function rendering_method1()
...
EndFunction
Function rendering_method2()
...
EndFunction
Function rendering_method3()
...
EndFunction
Local renderer = rendering_method1
Dopodichè abbiamo la nostra funzione di disegno delle forme:
Function render_shapes()
...
renderer()
...
EndFunction
Infine abbiamo una funzione per impostare il metodo di rendering, che potremmo utilizzare nelle preferenze del nostro programma per cambiare metodo di rendering:
Function set_render_method(num)
If num = 1
renderer = render_method1
ElseIf num = 2
renderer = render_method2
Else
renderer = render_method3
EndIf
EndFunction
Non è una figata? :lol:
Prossimi argomenti sulle funzioni:- Funzioni con numero variabile di argomenti
- Tabelle di Funzioni