- Offizieller Beitrag
Ich kanns einfach nicht lassen - immer wieder überkommen mich neue Ideen.
Also, grundsätzlich kann man das Folgende natürlich mit einer Globalen Variablen im Skript genausogut erledigen.
Folgende Überlegung:
- eine Berechnung liefert einen Wert
- diesen möchte ich mehrfach nutzen
- in Vergleichsoperationen und/oder Rechenoperationen
Nun kann ich den Wert natürlich in eine Globale Variable packen und dann skriptweit damit weitermachen.
Anstelle der Zuweisung zu einer Variablen rufe ich nun die Funktion _Self() auf.
Der Name ist gut zu merken und das Speichern erfolgt in einer Lokalen Variable.
Und so sieht es aus:
Spoiler anzeigen
Local $a = 100, $b = 200, $c = 3
[/autoit] [autoit][/autoit] [autoit]_Self($a + $b) ; == initialisieren
ConsoleWrite('Wert von _self ' & _Self('', 'val') & @CRLF)
ConsoleWrite('_self < $c ' & _Self($c, '<') & @CRLF)
ConsoleWrite('_self > $c ' & _Self($c, '>') & @CRLF)
ConsoleWrite('_self / $c ' & _Self($c, '/') & @CRLF)
ConsoleWrite('_self * $c ' & _Self($c, '*') & @CRLF)
ConsoleWrite('_self + $c ' & _Self($c, '+') & @CRLF)
ConsoleWrite('_self - $c ' & _Self($c, '-') & @CRLF)
ConsoleWrite('Quadratwurzel aus _self ' & _Self($c, '1/2') & @CRLF)
ConsoleWrite('Kubikwurzel aus _self ' & _Self($c, '1/3') & @CRLF)
ConsoleWrite('_self hoch $c ' & _Self($c, '^') & @CRLF)
_Self(0, 0) ; == entladen (oder mit neuem Wert initialisieren)
;===============================================================================
; Function Name....: _Self
; Description......: Statisches Speichern eines numerischen Wertes, Vergleichs- u. Rechenoperationen mehrfach damit
; Parameter(s).....: $iVar Beim Initialisieren der zu speichernde Wert, sonst der Wert für die Operation mit dem hinterlegten Wert
; $sOp String der festlegt, welche Operation ausgeführt wird
; -1 übergebenen Wert initialisieren (Standard)
; 0 Wert entladen
; '< > = <> <= >=' Vergleichsoperationen ausführen
; '+ - * / ^' Rechenoperationen ausführen
; '1/2 1/3' Quadrat-, Kubikwurzel ziehen
; 'val' gespeicherten Wert zurückgeben
; Return Value(s)..: Ergebnis der Operation, gespeicherter Wert, (bei $sOp -1 u. 0 -- nichts)
; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
;===============================================================================
Func _Self($iVar, $sOp=-1)
Local Static $iSelf =''
Switch String($sOp)
Case '-1' ; == $iVar als Basiswert initialisieren
$iSelf = $iVar
Case '0' ; == Basiswert entladen
$iSelf = ''
Case '<', '>', '=', '<>', '<=', '>=' ; == Vergleichsoperation ausführen
Return Execute(String($iSelf & ' ' & $sOP & ' ' & $iVar))
Case '+','-', '*', '/', '^' ; == Rechenoperationen ausführen
Return Execute('(' & $iSelf & ') ' & $sOp & ' (' & $iVar & ')')
Case '1/2', '1/3' ; == Quadrat-, Kubikwurzel
Return Execute('(' & $iSelf & ') ^ (' & $sOp & ')')
Case 'val'
Return $iSelf
EndSwitch
EndFunc ;==>_Self
Inwiefern es tatsächlich sinnvoll einzusetzen ist, mag jeder für sich bewerten. Aber mir ist das grad so durch den Kopf gerauscht und ihr müßt es ertragen.