Ce face Array.size
size este dimensiunea tabloului, fixată la creare. Pozițiile valide sunt de la 0 la size - 1.
indices întoarce exact acest interval (0..size-1), ca IntRange. Bucla for (i in tablou.indices) este modul sigur de a parcurge pozițiile: nu poți greși cu „mai mic” sau „mai mic sau egal”. Cu i in tablou.indices verifici și dacă o poziție este validă.
Pentru liste, aceleași proprietăți se numesc tot size și indices.
Ce returnează
size: Int. indices: IntRange de la 0 la size - 1 (gol dacă tabloul este gol).
Exemple
Exemplul 1: Parcurgere cu poziții
Avem nevoie de poziție ca să afișăm numărul zilei. indices dă pozițiile 0, 1, 2, 3.
fun main() {
val pasi = intArrayOf(6200, 8400, 3100, 10050)
println("Zile: ${pasi.size}")
println("Poziții: ${pasi.indices}")
for (i in pasi.indices) {
println("Ziua ${i + 1}: ${pasi[i]} pași")
}
}
Rezultat
Zile: 4
Poziții: 0..3
Ziua 1: 6200 pași
Ziua 2: 8400 pași
Ziua 3: 3100 pași
Ziua 4: 10050 pași
Exemplul 2: Verificarea unei poziții
Înainte să citim, verificăm dacă poziția cerută este în indices. Altfel am primi ArrayIndexOutOfBoundsException.
fun main() {
val castigatori = arrayOf("Ioana", "Vlad", "Sorina")
for (loc in listOf(1, 3, 4)) {
val i = loc - 1
if (i in castigatori.indices) {
println("Locul $loc: ${castigatori[i]}")
} else {
println("Locul $loc: nu există")
}
}
}
Rezultat
Locul 1: Ioana
Locul 3: Sorina
Locul 4: nu există
Greșeli frecvente
- Scrii
for (i in 0..tablou.size): intervalul includesize, care nu este o poziție validă. Foloseșteindicessau0 until tablou.size. - Scrii
tablou.size()cu paranteze, ca în Java: în Kotlinsizeeste proprietate.
Comenzi înrudite
List.indices: indices este intervalul pozițiilor valide ale listei (0..size-1); lastIndex este poziția ultimului element.arrayOf: Creează un tablou (Array) cu dimensiune fixă din elementele date; intArrayOf creează un tablou de Int primitive.Array.copyOf: Creează o copie a tabloului; cu o dimensiune nouă, taie elementele în plus sau completează cu null/0.