2017-10-27 16 views
1

私はこのようなList<String>を宣言:Kotlin - 型の不一致:必須:見つかった文字列、:() - Kotlinでは>文字列

private val items = listOf<String> { 
     "String1", 
     "String2", 
     "String3" 
    } 

コンパイラは、私は、このエラーを与えている:

Type Mismatch.

Required: String

Found:() -> String

どういう意味ですか?どうすれば修正できますか?

P.S. Kotlinにはかなり新しいので、何かを明らかにするために私に同行してください。

答えて

6

あなたはコンパイラが関数型

Found:() -> String

だけではなく、のような括弧を使用見つかる理由です関数リテラルを導入{}で囲まれた引数(ラムダ)を通過しましたこの:

listOf("String1", "String2") 

いくつかの情報:

コットリンは、の最後の引数として渡されたときに()の後に関数を渡すことを許可します。関数がの場合は、括弧を省略することができます。これは、例のように引数だけです。したがって、コードは有効ですが、単に関数のパラメータの型と一致しません。

+0

偉大で詳細な答えをありがとう。私が質問に書いたように、私はKotlinの初心者で、これは私を大いに助けました。 – Daniele

1

ことは、これを試してみてください:

private val items = listOf("String1", "String2", "String3") 
+0

ええ、これは、ありがとう、動作します。答えに議論し、私が間違ったことを説明してください。 – Daniele

+0

{}が関数リテラル() - >宣言であることを意味するエラーについては説明しません。 – WilomGfx

関連する問題