Котлин: параметры именования в лямбде - PullRequest
0 голосов
/ 20 июня 2019

Пожалуйста, не обращайте внимания на фактическую «функциональность» и сконцентрируйтесь больше на использовании лямбды здесь, так как я взбиваюсь с лямбдами, давай также бегать и т. Д., Чтобы почувствовать Kotlin.

val listener : (String?)->String = {
            val s2 = it?.also {
            }
                ?: "Null"
            statusText.text=s2
            s2
        }

Так что это назначение лямбды "слушателю" просто отлично.

Может кто-нибудь сказать мне, почему я не могу присвоить имя первому (и единственному) параметру, например.

  val listener : (s: String?)->String = {
            val s2 = s?.also {
            }
                ?: "Null"
            statusText.text=s2
            s2
        }

В строке "val s2 = s? .Also ..." компилятор жалуется, что "s" является неразрешенной ссылкой. Если да, то почему именование параметра допустимо, например:

val listener : (s: String?)->String = {

Любое объяснение очень поможет моему пониманию.

1 Ответ

4 голосов
/ 20 июня 2019

должно быть

val listener : (s: String?) -> String = { s ->
    val s2 = s?.also {
    } ?: "Null"
    statusText.text=s2
    s2
}

или просто

val listener : (String?) -> String = { s ->
    val s2 = s?.also {
    } ?: "Null"
    statusText.text=s2
    s2
}

Обратите внимание, что использование return в мамбде тоже неверно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...