2017-06-02 13 views
2

私はKotlinを初めて使い、init functionが配列のコンテキストでどのように機能するかを理解するのが難しいです。私はString型の配列を使用して作成しようとしている場合は具体的には、:Kotlin Array init関数

val a = Array<String>(a_size){"n = $it"} 
  1. これは動作しますが、"n = $it"は何を意味するのでしょうか?これは、かっこ内ではなく中括弧内にあるので、initのようには見えません。

  2. Intの配列を欲しい場合は、init関数または中括弧内の部分はどのように見えますか?

答えて

7

あなたは、初期化子とコンストラクタを呼び出している:

/** 
* 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) 

したがって、あなたは各要素に対して呼び出されますコンストラクタに関数を渡しています。

val a = Array<Int>(a_size) { 0 } 

また、あなたは次のように配列を作成することができます:あなただけのすべての0の値を持つ配列を作成したい場合aの結果はそうのようにそれを行う、

[ 
    "n = 0", 
    "n = 1", 
    ..., 
    "n = $a_size" 
] 

になります

val a = arrayOf("a", "b", "c") 
val b = intArrayOf(1, 2, 3) 
+1

アレイを任意の値で初期化したくない場合はどうすればよいですか?このJavaスニペットの対応するKotlin ArrayList lst = new ArrayList (10); ' – Araf

+2

Javaでは、これはすべての値が '0'のリストになります。 Kotlinではこれを明示的に指定する必要があります。 – nhaarman

+0

私は参照してください。しかし、私は小枝テンプレートを書く過程にあり、さまざまなデータ型の配列作成構文を一般化しようとしています。ですから、私は 'Array <{{TYPE}}>(a_size){{{GENERAL_INITIALIZER}}'と読みたいものが必要です。 これは現在の構文で可能ですか? – Araf

関連する問題