Функциональный тип с разрешенной неразрешенной ссылкой: invoke - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть onClick функциональный тип, объявленный как поле класса val onClick: (() -> Unit)? = null

И я хочу использовать его следующим образом:

if (onClick != null) {
    item.setOnClickListener { onClick.invoke() }
}

Этот код работает, но когда я заменил его наlet функция, показывает ошибку unresolved reference: invoke:

onClick?.let {
    item.setOnClickListener { it.invoke() }
}

Почему это происходит?

1 Ответ

0 голосов
/ 16 ноября 2018

it здесь - это приемник второй лямбды (передаваемой в setOnClickListener), а не первая лямбда (let). Объявите параметр для первой лямбды, явно указав ему имя, а затем используйте его, например,

onClick?.let { handler ->
    item.setOnClickListener { handler.invoke() }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...