Was sollte ich dagegen haben? Es ist die beste Antwort!
local Vars in Funktionen
Best Answer Gerdi , 01 August 2015 - 07:02 AM
Hier nochmals das Skript, bei dem die Gefahr der Verwendung von dynamischen Variablen in Funktionen krass zuschlaegt.
Bei der zweiten Anzeige von ListVars ist die (fuer groessere Projekte mit einem Glueckspiel vergleichbare) Verteilung (global oder local) von GanzZahl 1 bis 10 deutlich sichtbar. Hier wird auch ersichtlich, dass das Problem nicht immer bemerkt wird, denn die Fakultaet enthaelt das richtige Ergebnis, trotz local/global-Mix. der Teilergebnisse.
Loop 10 { if(mod(a_index,2)) ; ungerade Ganzahl { GanzZahl%A_Index%:=A_Index AnzeigeGanzzahl:=AnzeigeGanzzahl " " GanzZahl%A_Index% } } ListVars MsgBox hinten ist die Welt noch in Ordnung. MsgBox % "Die ungeraden Ganzzahlen bis 10 `n" AnzeigeGanzzahl MsgBox % "8-Fakultaet `n" Fakultaet(8) ; dieser Aufruf bewirkt die Aenderungen der Globalen Variablen ListVars MsgBox hinten sind nochmals die globalen ueberschriebenen GanzZahlen ersichtlich.`nDie 1 wurde mit 1 ueberschrieben. Die 9 garnicht weil die Fakultaet bei 8 aufhoerte. ExitApp Fakultaet(IGanzZahl) { LastErg:=1 Loop, % IGanzZahl { LastErg:=LastErg * A_Index GanzZahl%A_Index%:=LastErg } ListVars MsgBox hinten ist der local/global-Mix von GanzZahl ersichtlich. `nDie globalen GanzZahlen sind schon ueberschrieben. return GanzZahl%IGanzZahl% }
Thats why Assume/force-local mode is not a nice to have Wish. It is a must have Wish with high priority.