Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

local Vars in Funktionen



  • Please log in to reply
16 replies to this topic
just me
  • Members
  • 1496 posts
  • Last active: Nov 03 2015 04:32 PM
  • Joined: 28 May 2011

Was sollte ich dagegen haben? Es ist die beste Antwort!


Prefer ahkscript.org for the time being.


Gerdi
  • Members
  • 39 posts
  • Last active: Aug 06 2015 11:42 PM
  • Joined: 03 Feb 2013

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.