im Beispiel auf https://ahkde.github.io/docs/v2/lib/IsSet.htm#ExBasic
Code: Select all
Loop 2
if !IsSet(MeineVar) ; Ist dies die erste "Nutzung" von MeineVar?
MeineVar := A_Index ; Bei "Erstnutzung" initialisieren.
MsgBox Funktion1(&MeineVar)
MsgBox Funktion2(&MeineVar)
Funktion1(&Param) ; ByRef-Parameter.
{
if IsSet(Param) ; Param selbst übergeben, was ein Alias für MeineVar ist.
return Param ; ByRef-Parameter werden automatisch dereferenziert.
else
return "ungesetzt"
}
Function2(Param)
{
if IsSetRef(Param) ; Die in Param enthaltene VarRef übergeben.
return %Param% ; Param explizit dereferenzieren.
else
return "ungesetzt"
}
Ansonsten kommt übrigens statt:
Error: Call to nonexistent function.
Specifically: Funktion2(&MeineVar)
die unpassende Warnung:
Warning: This variable appears to never be assigned a value.
Specifically: global Funktion2
In https://ahkde.github.io/docs/v2/Functions.htm#intro steht:
Man kann eine Funktion auch aufrufen, ohne ihren Rückgabewert speichern zu müssen:
…
In diesem Fall aber wird der Rückgabewert der Funktion verworfen; diese Art von Aufruf ist nur sinnvoll, wenn die Funktion mehr als nur einen Rückgabewert zurückgibt.
Da eine Funktion nicht mehr als einen Rückgabewert zurückgibt, schlage ich vor:
diese Art von Aufruf ist nur sinnvoll, wenn die Funktion mehr bewirkt, als nur einen Rückgabewert zu geben.