从 Kotlin 中的输入流初始化数组
Initializing Array from input stream in Kotlin
我想从输入流中读取下一个整数到 IntArray。
我写了下面的代码,但正如我们在
无法保证初始化会从索引 0 开始并逐个进行。
是否有一些类似的优雅解决方案不是基于这个可能是错误的(但正如在所有已知实现中的其他线程中所讨论的那样)假设?
fun Scanner.readIntArray(n: Int): IntArray {
return IntArray(n){nextInt()}
}
您始终可以自己迭代索引以保证您想要的行为。
fun Scanner.readIntArray(n: Int) = IntArray(n).apply {
for (i in 0 until size) {
this[i] = nextInt()
}
}
你可以做到 return (1..n).map { nextInt() }.toIntArray()
.
自版本 1.3.50 起,API 文档中保证数组元素按顺序初始化。因此,您可以使用问题中的原始代码以这种方式填充 IntArray
。
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int-array/-init-.html
我想从输入流中读取下一个整数到 IntArray。
我写了下面的代码,但正如我们在
是否有一些类似的优雅解决方案不是基于这个可能是错误的(但正如在所有已知实现中的其他线程中所讨论的那样)假设?
fun Scanner.readIntArray(n: Int): IntArray {
return IntArray(n){nextInt()}
}
您始终可以自己迭代索引以保证您想要的行为。
fun Scanner.readIntArray(n: Int) = IntArray(n).apply {
for (i in 0 until size) {
this[i] = nextInt()
}
}
你可以做到 return (1..n).map { nextInt() }.toIntArray()
.
自版本 1.3.50 起,API 文档中保证数组元素按顺序初始化。因此,您可以使用问题中的原始代码以这种方式填充 IntArray
。
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int-array/-init-.html