2017-10-27 2 views
1

나는 이런 List<String>을 선언코 틀린 - 유형 불일치 : 필수 : ​​문자열이 발견되었습니다 : (-)> 코 틀린에 문자열

컴파일러는 나에게이 오류주고있다
private val items = listOf<String> { 
     "String1", 
     "String2", 
     "String3" 
    } 

:

Type Mismatch.

Required: String

Found:() -> String

을 무슨 뜻이에요? 어떻게 수정해야합니까?

P. Kotlin에 아주 새롭기 때문에 저에게 뭔가 명확한 것을 물어 봤습니다.

답변

6

당신은 컴파일러가

Found:() -> String

가 대신처럼 괄호를 사용하는 기능 유형을 발견 왜 함수 리터럴 (람다)를 소개 {} 안에 인수를 전달 이 :

listOf("String1", "String2") 

일부 정보 :

코 틀린은 다음에 함수를 전달할 수 있습니다. 이면 마지막으로 인수가 전달됩니다. 함수가 인 경우 괄호는 버려 질 수 있습니다 (예 :). 따라서 코드는 유효하지만 단순히 함수 매개 변수 유형과 일치하지 않습니다.

+0

위대하고 상세한 답변에 감사드립니다. 내가이 질문에 썼 듯이, 나는 Kotlin의 초보자이며, 이것은 나를 많이 도왔다. – Daniele

1

이 시도 :

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

그래, 고마워. 대답에 대한 논쟁과 내가 잘못한 것을 설명해주십시오. – Daniele

+0

{}이 함수 리터럴() -> 선언임을 나타내는 오류는 설명하지 않습니다. – WilomGfx