为什么var i在Kotlin中以0开头?

时间:2017-09-14 07:03:35

标签: kotlin

我读了一个示例代码val asc = Array(5, { i -> (i * i).toString() })

结果为["0", "1", "4", "9", "16"]

但我很奇怪为什么var我在表达式{ i -> (i * i).toString() }

中以0开头

2 个答案:

答案 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)。