我读了一个示例代码val asc = Array(5, { i -> (i * i).toString() })
。
结果为["0", "1", "4", "9", "16"]
。
但我很奇怪为什么var我在表达式{ i -> (i * i).toString() }
答案 0 :(得分:6)
您使用的构造函数如下所示:
/**
* Creates a new array with the specified [size], where each element is calculated by calling the specified
* [init] function. The [init] function returns an array element given its index.
*/
public inline constructor(size: Int, init: (Int) -> T)
对于数组,从0
开始的索引,因此{ i -> (i * i).toString() }
0
作为参数会产生0
。< / p>
如果有任何疑问,您可以使用此代码进行检查:
fun main(args: Array<String>) {
val func: (Int) -> (String) = { i -> (i * i).toString() }
println(func(0))
}
答案 1 :(得分:5)
Kotlin中的数组(与许多语言一样,包括C,C ++,C#和Java)都使用零基数组。这意味着第一个元素位于0位。
(参见Fortran,其中数组基于1)。