7.1 – Funzioni personali
Le funzioni personali (o UDF, “User-defined function”) permettono di definire una serie a piacere di istruzioni richiamabili poi con un solo comando. In tal modo non è necessario ripetere righe e righe di codice per eseguire la stessa operazione in punti diversi dello script. Ad ogni funzione è associato un nome e, tramite questo, può essere richiamata come qualsiasi altra funzione già vista (MsgBox, ConsoleWrite, FileRead, ecc.).
1 2 3 4 5 6 7 8 9 10 11 12 |
Dim $a, $b $a=5 $b=1 Somma() $b=4 Somma() Func Somma() MsgBox(0, "Risultato", $a+$b) EndFunc |
Se necessario, può essere configurata in modo tale da accettare dei parametri in ingresso (da specificare dopo il nome della funzione) e/o restituirne uno in uscita (attraverso il comando return).
1 2 3 4 5 6 7 8 9 10 |
Dim $Risultato $Risultato = Somma(5, 1) MsgBox (0, "Risultato", $Risultato) $Risultato = Somma(5, 4) MsgBox (0, "Risultato", $Risultato) Func Somma($a, $b) Return $a+$b EndFunc |
Diversamente da altri linguaggi, come il C, non è necessario definire una funzione ad inizio file attraverso l’utilizzo di un prototipo, ma è possibile definirla anche in un punto successivo a quello in cui viene chiamata.
Riprendendo l’esempio del Bubble Sort, illustrato nell’articolo sugli array, possiamo ora definire una funzione indipendente per ordinare in ordine crescente un vettore:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include <Array.au3> Dim $Array[5]=[4, 2, 7, 5, 1] _ArrayDisplay ($Array) $Array=BubbleSort ($Array) _ArrayDisplay($Array) Func BubbleSort ($v) $Max=UBound($v) While $Max>0 For $i=0 To $Max-2 If $v[$i]>$v[$i+1] Then $Temp = $v[$i] $v[$i] = $v[$i+1] $v[$i+1] = $Temp EndIf Next $Max=$Max-1 WEnd Return $v EndFunc |
7.2 – Librerie esterne
E’ inoltre possibile inserire le funzioni personali in un file esterno e richiamarlo a piacere all’interno dei propri progetti. In questo modo, è possibile separare gli script eccessivamente lunghi in più file o, se si desidera, fornire ad altri determinate funzioni senza dover condividere l’intero progetto.
Per fare ciò, è sufficiente definire le proprie funzioni in un nuovo file, da salvare poi come un normalissimo script di AutoIt (quindi estensione .au3), e includerlo ad inizio progetto tramite il comando:
1 |
#include "NomeFile.au3" |
Se la libreria esterna non è situata nella stessa cartella del file che la desidera includere, ma, per esempio, in una sottocartella chiamata “Librerie”, è necessario precisarne l’ubicazione:
1 |
#include "Librerie\NomeFile.au3" |
Certe funzioni viste negli articoli precedenti, come per esempio _FileReadLine o _ArrayDisplay, sono definite in librerie già incluse nel pacchetto di AutoIt (_FileReadLine in File.au3, _ArrayDisplay in Array.au3). Queste sono situate nella cartella “Include”, situata nel percorso di installazione (tipicamente “C:\Program Files\AutoIt”), e per utilizzarle è necessario usare la seguente sintassi:
1 |
#include <File.au3> |