Я хотел бы передать ссылку на функцию обнуляемого объекта. В качестве примера для Android, скажем, я хочу использовать Activity#onBackPressed
из фрагмента, который является потомком этой деятельности.
Если бы я хотел вызвать эту функцию, я мог бы легко сделать
activity?.onBackPressed()
Однако, скажем, я хотел вместо этого передать это как ссылку:
val onBackPressedRef = activity::onBackPressed
Это дает знакомую нулевую безопасную ошибку Разрешены только безопасные или ненулевые допустимые вызовы ...
Я могу устранить ошибку, выполнив следующее, но использование !!
явно не идеально:
val onBackPressedRef = activity!!::onBackPressed
Попытка activity?::onBackPressed
была моим первым инстинктом, ноэто также приводит к нескольким ошибкам, из-за которых интерпретатор кажется сбитым с толку.
val onBackPressedRef = activity?.let { it::onBackPressed }
Этот последний вариант работает , но он намного страшнее, чем просто использование ?::
. Я проверил все документы, которые смог найти, но чувствую, что что-то упустил. Есть идеи?