29

IntKotlinで指定されたサイズの2次元配列を宣言する最も簡単な方法はありますか?

val board = Array(n, { IntArray(n) })
4

3 に答える 3

21

2D 配列を作成するための新しいトップレベル関数のソース コードを次に示します。Kotlin に足りないものがある場合は、それを拡張します。次に、提案したいことのYouTrack 課題を追加し、ステータスを追跡します。この場合、それらは上記よりもはるかに短くはありませんが、少なくとも何が起こっているかについてより明白な名前を提供します.

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

そして使用法:

public fun foo() {
    val someArray = array2d<String?>(100, 10) { null }
    val intArray = array2dOfInt(100, 200)
}
于 2015-12-31T01:36:24.297 に答える
11

現在、これが最も簡単な方法です。後で適切な関数を使用して標準ライブラリを拡張します。

于 2014-12-17T14:59:41.077 に答える
2

はい、指定されたコードは、2 次元配列を宣言する最も簡単な方法です。

以下に、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("")
    }

}
于 2017-07-20T04:12:53.950 に答える