Существует ли простой нулевой безопасный оператор для ссылок на функции Kotlin? - PullRequest
3 голосов
/ 12 ноября 2019

Я хотел бы передать ссылку на функцию обнуляемого объекта. В качестве примера для Android, скажем, я хочу использовать Activity#onBackPressed из фрагмента, который является потомком этой деятельности.

Если бы я хотел вызвать эту функцию, я мог бы легко сделать

activity?.onBackPressed()

Однако, скажем, я хотел вместо этого передать это как ссылку:

val onBackPressedRef = activity::onBackPressed

Это дает знакомую нулевую безопасную ошибку Разрешены только безопасные или ненулевые допустимые вызовы ...


Я могу устранить ошибку, выполнив следующее, но использование !! явно не идеально:

val onBackPressedRef = activity!!::onBackPressed

Попытка activity?::onBackPressed была моим первым инстинктом, ноэто также приводит к нескольким ошибкам, из-за которых интерпретатор кажется сбитым с толку.

val onBackPressedRef = activity?.let { it::onBackPressed } 

Этот последний вариант работает , но он намного страшнее, чем просто использование ?::. Я проверил все документы, которые смог найти, но чувствую, что что-то упустил. Есть идеи?

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