FUNKCJE

Funkcje w AutoIt są kawałkami kodu, który można wywołać, podając jego nazwę. Deklaruje się je pomiędzy Func a EndFunc.
Func nazwa_funkcji()
...
<kod który funkcja ma wykonać>
...
EndFunc
Funkcje wykorzystuje się po to, by nie pisać kilkukrotnie identycznego kodu, ew. podobnego, ale o innych parametrach. Redukujemy w ten sposób rozmiar skryptu, co
znacząco przyczynia się do jego uproszczenia.
Przykład
Func test() ;"test" to nazwa funkcji, nawiasy są obowiązkowe nawet gdy nie ma argumentów
MsgBox(4,"Test","to jest MsgBox wywołany z funkcji")
EndFunc
W ten sposób zadeklarowaliśmy funkcję, po uruchomieniu programu jednak nic się nie dzieje. Aby wywołać funkcję wystarczy podać jej nazwę:
test()
Func test()
MsgBox(4,"Test","to jest MsgBox wywołany z funkcji")
EndFunc
Nie ma znaczenia, gdzie deklarujemy funkcje. Dla wygody i czytelności programu najlepiej jest umieścić je na samym końcu kodu.
W nawiasie możemy umieścić parametry przekazywane do funkcji:
test("To jest przykład wykorzystania")
test("parametru funkcji, oczywiście")
test("funkcje nie służą tylko do wyświetlania")
test("prostych MsgBox'ów ;-)")

Func test($tekst)
MsgBox(4,"Test",$tekst)
EndFunc
W ten prosty sposób, nie musimy powtarzać tego samego kawałku kodu (wyświetlanie MsgBox'a) - podaliśmy tylko parametr (w tym przypadku ciąg znaków), na
których funkcja opiera swoje działanie. Oczywiście, funkcja może mieć więcej niż jeden parametr.
Prosta funkcja przedstawiająca sumę 2 parametrów:
dodaj(5,2)

Func dodaj($a,$b)
$c = $a + $b
MsgBox(4,"Suma: ", $c)
EndFunc
Możliwe jest utworzenie funkcji, do której w zależności od potrzeb możemy przekazywać różne ilości parametrów. Konieczne jest wtedy zadeklarowanie domyślnej
wartości parametrów, które są opcjonalne. Ilość przekazanych do funkcji parametrów możemy odczytać za pomocą makra @NumParams.
Przykład (wypisuje ilość parametrów przekazanych do funkcji):
test() ;wypisze liczbę 0
test(1) ;wypisze liczbę 1
test(1,1) ;wypisze liczbę 2
test(5,6,7) ;wypisze liczbę 3

Func test($1=0,$2=0,$3=0)
MsgBox(4,"Ilość parametrów",@NumParams)
EndFunc
Domyślne wartości funkcji mogą być zadeklarowane jako wyrażenie:
test() ;wyświetli 0
test(1) ;wyświetli 2
test(1,1) ;wyświetli 4
test(1,1,1) ;wyświetli 3

Func test( $a=0, $b=0, $c=$a+$b)
MsgBox( 0, "", $a+$b+$c)
EndFunc
Należy jednak zachować ostrożność, gdyż pozornie identyczna funkcja:
Func test( $c=$a+$b, $a=0, $b=0)
MsgBox(0,"",$a+$b+$c)
EndFunc
spowoduje wystąpienie błędu. Wynika to z kolejności przypisywania wartości parametrom. Przypisywanie odbywa się od lewej strony nawiasu do prawej. W momencie
przypisywania wartości parametrowi $c nie jest jeszcze znana wartość $a i $b.

UWAGA: Próba przekazania do funkcji większej ilości parametrów niż zadeklarowana spowoduje wystąpienie błędu.
Tekst udostępniany na licencji Creative Commons: uznanie autorstwa, na tych samych warunkach,