Kotlin中的二维Int数组

paw*_*gio 26 arrays kotlin

这是Int在Kotlin中声明具有指定大小的二维数组的最简单方法吗?

val board = Array(n, { IntArray(n) })
Run Code Online (Sandbox Code Playgroud)

Jay*_*ard 20

以下是用于创建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) }
Run Code Online (Sandbox Code Playgroud)

用法:

public fun foo() {
    val someArray = array2d<String?>(100, 10) { null }
    val intArray = array2dOfInt(100, 200)
}
Run Code Online (Sandbox Code Playgroud)


And*_*lav 11

目前这是最简单的方法,我们稍后将使用适当的函数扩展标准库

  • 现在是1.1.3.它是最新的吗? (5认同)
  • 我有其他方法来声明二维Int数组吗? (2认同)