- Offizieller Beitrag
Hi,
in Funktionen ist es sinnvoll für optionale Parameter das Keyword 'Default' für den Aufruf zuzulassen. Andererseits ist es in vielen Standardfunktionen Usus für Defaults die '-1' oder einen Leerstring zu verwenden.
Somit kann es sinnvoll sein, in eigenen Funktionen mehrere Defaults zuzulassen. Um die Abfrage zu vereinfachen habe ich die Funktion _IsDefault() erstellt.
Mögliche Verwendung:
[autoit]ConsoleWrite(_MyFunc('Klaus', '') & @CRLF)
ConsoleWrite(_MyFunc('Fritz', -1, 'Peter') & @CRLF)
ConsoleWrite(_MyFunc('Karla', Default, 'Susi') & @CRLF)
Func _MyFunc($a, $b='Lisa', $c='Emil')
If _IsDefault($b, '-1,', ',') Then $b = 'Lisa' ; gültig sind: -1, Leerstring u. Default
Return $a & ' ' & $b & ' ' & $c
EndFunc
_IsDefault()
;===============================================================================
; Function Name: _IsDefault($var, $sOtherDefaults='-0', $sDelim=Default)
; Description: Prüft ob Funktionsparameter mit einem/mehreren Defaultwert/en aufgerufen wurde
; Parameter(s): $var - auf Defaultwert zu prüfende Variable (auf 'Default' wird immer geprüft)
; optional $sOtherDefaults - trennzeichenbasierter String mit anderen Werten,
; die auch zur Erkennung als "Default" möglich sind
; optional $sDelim - Trennzeichen in $sOtherDefaults, Standard ist 'GUIDataSeparatorChar'
; Return Value(s): 1 - Variable wurde mit einem Default aufgerufen
; 0 - Variable enthält keinen Defaultwert
; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
;===============================================================================
Func _IsDefault($var, $sOtherDefaults='-0', $sDelim=Default)
Local $aDef[1] = [0], $match = 0
If IsKeyword($sDelim) Then $sDelim = Opt('GUIDataSeparatorChar')
If $sOtherDefaults <> '-0' Then $aDef = StringSplit($sOtherDefaults, $sDelim, 1)
If Not $aDef[0] Then Return IsKeyword($var)
For $i = 1 To $aDef[0]
If $var = $aDef[$i] Then $match = 1
Next
If Not $match Then Return IsKeyword($var)
Return 1
EndFunc ;==>_IsDefault