È il modo più semplice per dichiarare l'array Int
bidimensionale con dimensioni specificate in Kotlin?Array bidimensionale in Kotlin
val board = Array(n, { IntArray(n) })
È il modo più semplice per dichiarare l'array Int
bidimensionale con dimensioni specificate in Kotlin?Array bidimensionale in Kotlin
val board = Array(n, { IntArray(n) })
Ecco il codice sorgente per le nuove funzioni di primo livello per creare matrici 2D. Quando a Kotlin manca qualcosa, estendilo. Quindi aggiungi YouTrack issues per le cose che desideri suggerire e traccia lo stato. Anche se in questo caso non sono molto più brevi di quanto sopra, almeno fornisce una denominazione più ovvia per ciò che sta accadendo.
public inline fun <reified INNER> array2d(sizeOuter: Int, sizeInner: Int, noinline innerInit: (Int)->INNER): Array<Array<INNER>>
= Array(sizeOuter) { Array<INNER>(sizeInner, innerInit) }
public fun array2dOfInt(sizeOuter: Int, sizeInner: Int): Array<IntArray>
= Array(sizeOuter) { IntArray(sizeInner) }
public fun array2dOfLong(sizeOuter: Int, sizeInner: Int): Array<LongArray>
= Array(sizeOuter) { LongArray(sizeInner) }
public fun array2dOfByte(sizeOuter: Int, sizeInner: Int): Array<ByteArray>
= Array(sizeOuter) { ByteArray(sizeInner) }
public fun array2dOfChar(sizeOuter: Int, sizeInner: Int): Array<CharArray>
= Array(sizeOuter) { CharArray(sizeInner) }
public fun array2dOfBoolean(sizeOuter: Int, sizeInner: Int): Array<BooleanArray>
= Array(sizeOuter) { BooleanArray(sizeInner) }
e di utilizzo:
public fun foo() {
val someArray = array2d<String?>(100, 10) { null }
val intArray = array2dOfInt(100, 200)
}
Attualmente questo è il modo più semplice, estenderemo la libreria standard con le funzioni appropriate in seguito
Sì, il codice data è il modo più semplice per dichiarare un array bidimensionale.
Di seguito, vi sto dando un esempio di inizializzazione di array 2D &.
fun main(args : Array<String>) {
var num = 100
// Array Initialization
var twoDArray = Array(4, {IntArray(3)})
for(i in 0..twoDArray.size - 1) {
var rowArray = IntArray(3)
for(j in 0..rowArray.size - 1) {
rowArray[j] = num++
}
twoDArray[i] = rowArray
}
// Array Value Printing
for(row in twoDArray) {
for(j in row) {
print(j)
print(" ")
}
println("")
}
}
Puoi fornire alcuni collegamenti alla documentazione? Posso trovare qualsiasi riferimento e il plug in kotlin di Idea non risolve il problema. –
Le funzioni e il loro codice sorgente sono nella mia risposta @ Micheled'Amico ... non fanno parte dello stdlib. –
Scusa se ero troppo pigro quando ho la canna della tua risposta. .... Ma l'ho provato e la versione generica non funziona. Anche se corretto, dovrebbe restituire un 'Array (Array)' in fase di esecuzione ricevo 'java.lang.ClassCastException: [[Ljava.lang.Object; non può essere lanciato su [[Something; 'exception. Inoltre IMHO una firma migliore può essere 'array2d (sizeOuter: Int, sizeInner: Int, init: (Int, Int) -> INNER)'. Presenterò una domanda per capire cosa c'è che non va nella definizione della tua funzione. –