2017-09-14 34 views
4

我读了一个示例代码val asc = Array(5, { i -> (i * i).toString() })为什么我在Kotlin中以var开头?

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

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

+1

其数组索引..总是从0 –

+4

出于兴趣开始,你在其他任何语言编程?对我而言,科林似乎是一个奇怪的第一选择。 – Bathsheba

+0

@Bathsheba,好奇为什么觉得Kotlin是一个奇怪的第一选择? – innov8

回答

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() }00参数结果。

您可以如果有任何疑问,这个代码检查:

fun main(args: Array<String>) { 
    val func: (Int) -> (String) = { i -> (i * i).toString() } 
    println(func(0)) 
} 
5

阵列在科特林(如许多语言,包括C,C++,C#和Java)都使用零基于阵列。这意味着第一个元素位于位置0.

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

相关问题