2017-09-14 62 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的)。

相關問題