Tableau bidimensionnel Int à Kotlin

est-ce la façon la plus facile de déclarer deux dimensions Int tableau avec la taille spécifiée dans Kotlin?

val board = Array(n, { IntArray(n) })
22
demandé sur pawegio 2014-12-16 22:43:38

3 réponses

voici le code source pour les nouvelles fonctions de haut niveau pour créer des tableaux 2D. Quand Kotlin manque quelque chose, étends-le. Ensuite, ajouter YouTrack issues pour les choses que vous souhaitez suggérer et de suivre l'état. Bien que dans ce cas, ils ne sont pas beaucoup plus courts que ci-dessus, au moins fournit un nom plus évident pour ce qui se passe.

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) }

Et d'utilisation:

public fun foo() {
    val someArray = array2d<String?>(100, 10) { null }
    val intArray = array2dOfInt(100, 200)
}
18
répondu Jayson Minard 2016-10-03 14:09:40

actuellement c'est la façon la plus facile, nous allons étendre la bibliothèque standard avec les fonctions appropriées plus tard

10
répondu Andrey Breslav 2014-12-17 14:59:41

Oui, votre code donné est la façon la plus facile de déclarer un tableau bidimensionnel.

ci-dessous, je vous donne un exemple D'initialisation et d'impression de tableau 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("")
    }

}
2
répondu Avijit Karmakar 2017-07-20 04:12:53