Post by just me » 28 Nov 2023, 04:25
Moin
@effel,
in Deinem Beispiel brauchst Du
global test nicht nur, um die Variable
test auch außerhalb der Funktion ändern zu können. Ohne
global würde die Funktion immer nur
1 liefern, weil
test am Funktionsende als lokale Variable immer gelöscht werden würde.
Wenn Du eine nicht-globale Variable nutzen willst, würde ich folgendes Konstrukt vorschlagen;
Code: Select all
msgbox % test() ; 1
msgbox % test() ; 2
msgbox % test() ; 3
msgbox % test() ; 4
msgbox % test(True) ; 1
Test(Init := False) {
Static Test:= 0
If Init
Test := 0
Return ++Test
; alternativ (Ternary):
; Return (Init ? Test := 1 : ++Test)
}
Moin [mention]effel[/mention],
in Deinem Beispiel brauchst Du [c]global test[/c] nicht nur, um die Variable [c]test[/c] auch außerhalb der Funktion ändern zu können. Ohne [c]global[/c] würde die Funktion immer nur [c]1[/c] liefern, weil [c]test[/c] am Funktionsende als lokale Variable immer gelöscht werden würde.
Wenn Du eine nicht-globale Variable nutzen willst, würde ich folgendes Konstrukt vorschlagen;
[code]msgbox % test() ; 1
msgbox % test() ; 2
msgbox % test() ; 3
msgbox % test() ; 4
msgbox % test(True) ; 1
Test(Init := False) {
Static Test:= 0
If Init
Test := 0
Return ++Test
; alternativ (Ternary):
; Return (Init ? Test := 1 : ++Test)
}[/code]