首页 > 解决方案 > 从 Kotlin 中的输入流初始化数组

问题描述

我想将输入流中的下一个 n 整数读入 IntArray。

我在下面编写了代码,但正如我们 在 Kotlin 数组初始化中的 init 调用顺序中讨论的那样, 不能保证初始化将从索引 0 开始并一一进行。

是否有一些类似的优雅解决方案不是基于这个可能是错误的(但正如在所有已知实现中的另一个线程中讨论的那样)假设?

fun Scanner.readIntArray(n: Int): IntArray {
    return IntArray(n){nextInt()}
}

标签: arrayskotlinioinit

解决方案


您始终可以自己迭代索引以保证您想要的行为。

fun Scanner.readIntArray(n: Int) = IntArray(n).apply {
    for (i in 0 until size) {
        this[i] = nextInt()
    }
}

推荐阅读