Was mir bei Map fehlt:
- Map als Wert einer Variablen - Deklaration während der Zuweisung
- Deklaration einer Map mit gleichzeitiger Wertzuweisung
Zu diesem Zweck habe ich mir jetzt eine Funktion erstellt, die 10 Key-Value-Paare während der Deklaration zuweisen kann.
Hier mal der Vergleich
ohne Funktion:
AutoIt
Global $m[]
$m.Eins = 1
$m.Zwei = 2
Global $mTmp[]
$m.Zwanzig = $mTmp ; schön wäre ja: $m.Zwanzig = []
$m.Zwanzig.Eins = 21
$m.Zwanzig.Zwei = 22
mit Funktion nur noch eine Zeile:
AutoIt
Global $m = _MapNew("Eins", 1, "Zwei", 2, "Zwanzig", _MapNew("Eins", 21 ,"Zwei", 22))
ConsoleWrite($m.Eins & @CRLF)
ConsoleWrite($m.Zwei & @CRLF)
ConsoleWrite($m.Zwanzig.Eins & @CRLF)
ConsoleWrite($m.Zwanzig.Zwei & @CRLF)
Func _MapNew($k0=Null,$v0='',$k1=Null,$v1='',$k2=Null,$v2='',$k3=Null,$v3='',$k4=Null,$v4='', _
$k5=Null,$v5='',$k6=Null,$v6='',$k7=Null,$v7='',$k8=Null,$v8='',$k9=Null,$v9='')
Local $aKV[10][2] = [[$k0,$v0],[$k1,$v1],[$k2,$v2],[$k3,$v3],[$k4,$v4],[$k5,$v5],[$k6,$v6], _
[$k7,$v7],[$k8,$v8],[$k9,$v9]]
Local $m[]
For $i = 0 To 9
If $aKV[$i][0] = Null Then ExitLoop
$m[$aKV[$i][0]] = $aKV[$i][1]
Next
Return $m
EndFunc
Alles anzeigen
In vielen Fällen ist es sicher besser und übersichtlicher die Zuweisungen zeilenweise vorzunehmen.
Für die Zuweisung einer Map an eine bestehende Variable oder als Element einer Map oder eines Array ist es m.M.n. vorteilhafter mit der Funktion, als erst temporär eine Map zu erstellen und diese dann zuzuweisen.