2017-02-10 5 views
17

In JavaScript: {foo: bar, biz: qux}.Hat Kotlin eine Syntax für Map-Literale?

In Ruby: {foo => bar, biz => qux}.

In Java:

HashMap<K, V> map = new HashMap<>(); 
map.put(foo, bar); 
map.put(biz, qux); 

Sicher Kotlin kann als Java besser machen?

Antwort

24

können Sie tun:

val map = hashMapOf(
    "John" to "Doe", 
    "Jane" to "Smith" 
) 

Hier to ist ein Infix-Funktion, die ein Pair schafft.

Oder mehr abstact: Verwendung von mapOf() wie

val map = mapOf("a" to 1, "b" to 2, "c" to 3) 

(gefunden auf kotlinlang)

+0

Sie meinen wahrscheinlich 'mutableMapOf()'? Es gibt keine 'hashMap()' in der Kotlin Runtime –

+0

@CedricBust Nein, ich meinte eigentlich 'hashMap()' (siehe hier: https://blog.jetbrains.com/kotlin/2012/06/kotlin-m2-is- out /) ... aber wie du sehen kannst: das war 2012; und 2017 ist 'hashMapOf()' der richtige Weg. – GhostCat

+0

Das ist zwar sehr nah an einem Kartenliteral, aber ich würde immer noch argumentieren, dass es nicht dasselbe ist: Sie müssen immer noch Funktionsaufrufsyntax verwenden und können kein zusätzliches Komma nach dem letzten Element haben. – yegle