2017-09-14 5 views
4

サンプルコードval asc = Array(5, { i -> (i * i).toString() })を読みました。なぜvar iはKotlinで0で始まるのですか?

結果は["0", "1", "4", "9", "16"]です。私は式の中で0で始まるvarはKotlinで{ 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) 

をしたがって{ i -> (i * i).toString() }0での引数の結果として0と、アレイの0開始インデックスをとります。

任意の疑いがあります場合は、このコードでそれを確認することができます。

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

配列は(C、C++、C#の、およびJavaを含む多くの言語のように)すべてがゼロベースのアレイを使用する理由

は、しかし、私は非常に奇妙です。これは、最初の要素が0の位置にあることを意味します。

(配列は1から始まります)。

関連する問題