2015-06-01 11 views
22

Anche se questa potrebbe essere una domanda stupida, non riesco a capire come dichiarare un array letterale che raggruppa alcuni valori letterali di stringa.string array letterale? Come lo codice semplicemente?

Ad esempio, supponiamo di volere l'array java ["January", "February", "March"]. Come posso tradurre questo nell'ultima versione di Kotlin (today, 12.0.0)?

Cosa ho provato?

stringArray("January", "February", "March") 

risposta

73

È possibile utilizzare arrayOf(), come in

val literals = arrayOf("January", "February", "March") 
+2

Solo una nota, in realtà si potrebbe fare questo: ** 'letterali val = arrayOf ("Gennaio", "Febbraio", "Marzo")' **, ma il tipo di argomento ** ** è già esplicito dal contenuto dell'array, quindi va bene così e può essere omesso. – mruiz

+0

Oppure usa '[" Gennaio "," Febbraio "," Marzo "]' – yooouuri

+2

@yooouuri che è consentito solo sulle annotazioni ed è stato introdotto solo in Kotlin 1.2: https://kotlinlang.org/docs/reference/whatsnew12. html # annotazioni array-letterali-in- – vman

0

arrayOf (che si traduce in un Java Array) è un'opzione. Questo vi dà un mutabile contenitore, di dimensioni fisse degli elementi forniti:

val arr = arrayOf("January", "February", "March") 

che è, non c'è modo per estendere questa collezione per includere più elementi, ma si può mutare il suo contenuto.

Se invece di dimensione fissa, si desidera una collezione di dimensione variabile si può andare con arrayListOf o mutableArrayOf (mutableArrayOfcurrently returns an ArrayList ma questo potrebbe ad un certo cambiamento di punto):

val arr = arrayListOf("January", "February", "March")  
arr.add("April") 

Naturalmente, c'è anche un terza opzione, una collezione immutabile di dimensioni fisse, List. Questo non supporta la mutazione dei suoi contenuti e non può essere esteso. Per crearne uno, è possibile utilizzare listOf:

val arr = listOf("January", "February", "March") 
Problemi correlati