我将从字节流中读取数据。 Kotlin为数组生成函数提供的索引(如https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/-init-.html所述)是否保证按顺序,从零开始递增调用?
Array.kt
文件位于builtins
下,因此我不知道在哪里找到实际的代码。Array.kt
文件位于builtins
下,因此我不知道在哪里找到实际的代码。看看 Array的源代码:
public inline constructor(size: Int, init: (Int) -> T)
init
参数是一个函数,它接受一个 int 类型的参数(特定项目的索引),并期望返回数组中包含的类型 T 的值。如其他答案所示,这些按顺序调用,因为这是“自然”的方式。如果您不理解我的意思,请考虑实现的其他选择:for (i in 0..size) {
this.addToArray(init(i));
}
或者:
for (i in (size - 1)..0 {
this.addToArray(init(i));
}
相比之下:
val indices = mutableListOf<Int>()
while (indices.size != size) {
val i = random.nextInt(size);
if (i !in indices) {
indices.add(i);
this.addToArray(init(i));
}
}
var a = (0 until 10).step(1).toList().toTypedArray()
那似乎是事实。代码:
fun main() {
val x = Array(50) {println(it)}
}
Array.kt
的文件。 - QED