Is it the easiest way to declare two-dimensional Int array with specified size in Kotlin?

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

推荐答案

下面是用于创建2D数组的新顶级函数的源代码.当柯特林遗漏了什么,就延长它.然后为您想要建议的内容添加YouTrack issues,并跟踪状态.虽然在这种情况下,它们并不比上面短很多,但至少为正在发生的事情提供了一个更明显的名称.

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

And usage:

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

Kotlin相关问答推荐

API迁移到Spring Boot 3后,Spring Security无法工作

多模块Kotlin项目中的FreeFair

在Kotlin中的嵌套when语句中,else块是强制性的吗?

Kotlin - 什么时候和什么时候不喜欢内联函数,为什么?

如何在 Kotlin 中为类方法调用传递变量

Kotlin 启动与启动(Dispatchers.Default)

如何在 Compose 中创建可重用的修饰符?

如何在 Kotlin 中使用具有继承的泛型

Kotlin 无法找到或加载主类

将 Kotlin 类属性设置器作为函数引用

将 jetpack compose 添加到现有元素

使用 clear() 删除 EncryptedSharedPreferences 不起作用

Jetpack Compose – LazyColumn 不重组

Jacoco在Gradle 7.0.2和Kotlin 1.5.10上失败

未找到导入 kotlinx.coroutines.flow.*

使用导航组件在BottomNavigationView中传递参数

Kotlin:具有多个不同类型设置器的单个属性

在 Kotlin 中创建非绑定服务

kotlin中的全局可拓函数

旋转 kotlin 数组