Kotlin: gli array
Gli array sono una collezione di oggetti con tipo di dato simile o misto (solo quando si usa la type inference). In Kotlin gli array sono mutable con una dimensione fissa. Questo significa che è possibile sia accedere che modificare gli elementi di un array.
Gli array in Kotlin sono degli oggetti ed il costruttore prevede l’indicazione della dimensione (fissa) e della funzione di inizializzazione dell’array (init). Quest’ultima è utilizzata per attribuire dei valori iniziali agli elementi dell’array. In Kotlin abbiamo comunque molti modi per creare un array:
- longArrayOf : permette di creare un array di interi con segno a 64 bit. Esempio di utilizzo: val myArray: LongArray = longArrayOf(5L, 10L, 20L, 30L)
- ulongArrayOf : permette di creare un array di interi senza segno a 64 bit. Esempio di utilizzo: val myArray : ULongArray = ulongArrayOf(5UL,10UL,20UL,30UL)
- intArrayOf : permette di creare un array di interi con segno a 32 bit. Esempio di utilizzo: val myArray : IntArray = intArrayOf(5,10,20,30)
- uintArrayOf : permette di creare un array di interi senza segno a 32 bit. Esempio di utilizzo: val myArray : UIntArray = uintArrayOf(5U,10U,20U,30U)
- shortArrayOf : permette di creare un array di interi con segno a 16 bit. Esempio di utilizzo: val myArray: ShortArray = shortArrayOf(5, 10, 20, 30)
- ushortArrayOf : permette di creare un array di interi senza segno a 16 bit. Esempio di utilizzo: val myArray : UShortArray = ushortArrayOf(5U,10U,20U,30U)
- byteArrayOf : permette di creare un array di interi con segno a 8 bit. Esempio di utilizzo: val myArray: ByteArray = byteArrayOf(5, 10, 20, 30)
- ubyteArrayOf : permette di creare un array di interi senza segno a 8 bit. Esempio di utilizzo: val myArray : UByteArray = ubyteArrayOf(5U,10U,20U,30U)
- charArrayOf : permette di creare un array di caratteri. Esempio di utilizzo: val myArray : CharArray = charArrayOf(‘a’,’b’,’c’,’d’)
- booleanArrayOf : permette di creare un array di booleani. Esempio di utilizzo: val myArray : BooleanArray = booleanArrayOf(true, false, true, false)
- arrayOf : permette di creare un array di qualsiasi tipo (anche di tipi misti) indicando esplicitamente il tipo <type> oppure utilizzando la type inference. Esempi di utilizzo: val myArray = arrayOf(5,10,20,30) oppure val myArray2 = arrayOf<String>(“gatto”,”cane”,”topo”,”pinguino”). I tipi supportati sono:
- Number : in questo caso l’array può essere costituito da elementi di tipo misto purché siano Long, Int, Short, Byte, Double o Float,
- ULong, Long, UInt, Int, UShort, Short, UByte, Byte, Double, Float,
- Boolean,
- Char,
- String
- arrayOfNulls(N) : permette di creare un array formato da N elementi null.
- costruttore specifico : è possibile creare un array utilizzando direttamente il costruttore, ed in particolare passandogli il numero di elementi N e la funzione di init (è possibile passare come funzione di init null ed in tal caso riempirà tutti gli elementi con null). Esempio di utilizzo: val myStringArray = Array(5) { i -> (i * i).toString() } . Il costruttore può essere utilizzato anche per creare array di un tipo specifico, in particolare (in questo caso la funzione init è rappresentata da un valore costante):
- ULongArray: un array di numeri interi senza segno a 64bit. Esempio di utilizzo: ULongArray(5){3UL}
- LongArray: un array di numeri interi con segno a 64bit. Esempio di utilizzo: LongArray(5){3L}
- UIntArray: un array di numeri interi senza segno a 32bit. Esempio di utilizzo: UIntArray(5){3U}
- IntArray: un array di numeri interi con segno a 32 bit. Esempio di utilizzo: IntArray(5){3}
- UShortArray: un array di numeri interi senza segno a 16 bit. Esempio di utilizzo: UShortArray(5){3U}
- ShortArray: un array di numeri interi con segno a 16 bit. Esempio di utilizzo: ShortArray(5){3}
- UByteArray: un array di numeri interi senza segno a 8 bit. Esempio di utilizzo: UByteArray(5){3U}
- ByteArray: un array di numeri interi con segno a 8 bit. Esempio di utilizzo: ByteArray(5){3}
- DoubleArray: un array di numeri reali a 64 bit. Esempio di utilizzo: DoubleArray(5){1.24}
- FloatArray: un array di numeri reali a 32 bit. Esempio di utilizzo: FloatArray(5){1.24f}
- BooleanArray: un array di booleani. Esempio di utilizzo: BooleanArray(5){true}
- CharArray: un array di caratteri. Esempio di utilizzo: CharArray(5){‘a’}
- costruttore generico: è possibile dichiarare un array utilizzando il costruttore della classe Array passandogli il tipo e il valore di inizializzazione degli elementi nella forma val myArray = Array<Int>(5){0} che costruisce un array di 5 elementi di tipo Int, inizializzati a zero.
Ovviamente è possibile creare in Kotlin matrici, ovvero Array di Array dello stesso tipo. Esempio di utilizzo delle matrici è:
val even: IntArray = intArrayOf(2, 4, 6)
val odd: IntArray = intArrayOf(1, 3, 5)
val lala: Array<IntArray> = arrayOf(even, odd)
Per accedere ad un elemento dell’array di indice index al fine di leggerne il contenuto o modificarlo è possibile utilizzare l’operatore [index]. Nel caso in cui si acceda ad un indice più grande della dimensione dell’array viene generata un’eccezione di tipo ArrayIndexOutOfBoundException. Tra le proprietà e funzioni associate ad un Array (arr) ricordiamo le più comuni:
- size: ritorna il numero di elementi che compone l’array. Esempio di utilizzo: arr.size
- get: ritorna l’elemento relativo ad un determinato indice (index). Esempio di utilizzo: arr.get(index)
- set: assegna un determinato valore (value) all’elemento associato ad un determinato indice (index). Esempio di utilizzo: arr.set(index, value)
La lista di tutte le funzioni e proprietà degli array e la loro compatibilità con le librerie comuni di Kotlin indipendenti dall’architettura (common) e quelle dipendenti dall’architettura utilizzata (native, JVM e JS) è riportata in https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/
Commenti recenti