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

Hel*_*oCW 4 kotlin

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

结果是["0", "1", "4", "9", "16"].

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

s1m*_*nw1 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)
Run Code Online (Sandbox Code Playgroud)

这需要该索引开始于0为一个数组,因而{ i -> (i * i).toString() }0如在争论中的结果0.

如果有任何疑问,您可以使用此代码进行检查:

fun main(args: Array<String>) {
    val func: (Int) -> (String) = { i -> (i * i).toString() }
    println(func(0))
}
Run Code Online (Sandbox Code Playgroud)


Bat*_*eba 5

Kotlin中的数组(像许多语言,包括C,C++,C#和Java)都使用基于零的数组.这意味着第一个元素位于0位置.

(参见Fortran,其中数组是基于1的).