Как назначение является лямбда в котлин - PullRequest
0 голосов
/ 17 февраля 2019

Для реализации Handler().postDelayed() мне нужно добавить объект Runnable в первый параметр postDelayed():

private fun blankFields() {
    blank_fields_error.visibility = View.VISIBLE
    Handler().postDelayed({blank_fields_error.visibility = View.INVISIBLE}, 5000)
}

Я пытаюсь понять, как{blank_fields_error.visibility = View.INVISIBLE} - это лямбда просто потому, что она заключена в {}.Означает ли это, что любое назначение может быть лямбда-выражением, если оно заключено в {}?

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

Простое {} - это короткая версия

{ (parameters) /* From 0 to n */ ->
   // Do with it
}

, которую parameter можно заменить ключевым словом it , так как это всего один параметр и его не нужнохотя отображается (если есть только один параметр).

В вашем случае {} не имеет аргументов.Так что это будет функция без параметров.

В Kotlin лямбда - это функция, используемая в качестве другого параметра функции (функция более высокого порядка).

В вашем случае лямбда - это функция, представляющаязапускаемый интерфейс (обратите внимание, что это функция, если вы используете Kotlin).И postDelayed принимает один ()->Unit, который является работоспособным, и длинное значение.

0 голосов
/ 17 февраля 2019

Любой код - лямбда, если она заключена в фигурные скобки.Лямбда - это анонимная функция со списком параметров, который в некоторых случаях может быть опущен.Какой бы код вы не поместили в эти фигурные скобки (после списка параметров), это тело функции.

Это может быть один оператор или выражение:

{ println("Hello") }
{ a = 1 }

Или столько строк кодакак вам нравится:

{
    println(1)
    println(2)
    println(3)
}

Я рекомендую взглянуть на официальную документацию о лямбдах для получения дополнительной информации.

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