Nehmen wir an, ich habe
def A = "abc"
def X = "xyz"
Wie erstelle ich ein Map
Wo anstelle von
def map = [A:1, X:2]
Ich bekomme stattdessen das Äquivalent zum Schreiben
def map = [abc:1, xyz:2]
aber kann eine Variable A
und X
für den Schlüssel verwenden?
PS: Gleiche Frage für den Werteteil der Karte.
To use the value of a String as the key value of a map, simply surround the variable with parenthesis.
Map keys are strings by default: [a:1] is equivalent to ['a':1]. This can be confusing if you define a variable named a and that you want the value of to be the key in your map. If this is the case, then you must escape >the key by adding parenthesis..
[(A):1, (X):2]
wird die Variable in einen String maskiert. Mit["$A":1, (X):2]
ist das"$A"
eine interpolierte Zeichenfolge, die zu einem GString führt. Karten erwarten, dass die Schlüssel unveränderlich sind, was ein GString nicht bietet.Wenn Sie neben Joachims Antwort Einträge zu einer vorhandenen Karte hinzufügen möchten und die Schlüssel Variablen sind, verwenden Sie:
Wenn du benutzt:
Es wird davon ausgegangen, dass Sie die Literalzeichenfolge 'A' als Schlüssel verwenden möchten (obwohl im Gültigkeitsbereich eine Variable mit dem Namen A vorhanden ist.
Aktualisieren
Wie @tim_yates in einem Kommentar hervorhob, wird eine Schlüsselvariable auch aufgelöst, wenn Sie Folgendes verwenden:
Ich persönlich bevorzuge jedoch die Verwendung der
[A]
Syntax, da Refactoring-Tools möglicherweise die"$A"
Referenz verfehlen, wenn die Variable umbenannt wirdquelle
map."$A"
Syntax bietet Ihnen den Vorteil einer null-sicheren Kartennavigation, mitmap?."$A"
der Siemap[A]