Как Lazy Инициализировать с параметром в Kotlin

В Котлине я мог выполнить Lazy Initialization без параметра, как указано ниже.

val presenter by lazy { initializePresenter() } abstract fun initializePresenter(): T 

Однако, если у меня есть параметр в моем initializerPresenter ie viewInterface , как я могу передать параметр в Lazy viewInterface ?

 val presenter by lazy { initializePresenter(/*Error here: what should I put here?*/) } abstract fun initializePresenter(viewInterface: V): T 

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

 abstract class Class<V>(viewInterface: V) { private val anotherViewInterface: V by lazy { createViewInterface() } val presenter1 by lazy { initializePresenter(viewInterface) } val presenter2 by lazy { initializePresenter(anotherViewInterface) } val presenter3 by lazy { initializePresenter(createViewInterface()) } abstract fun initializePresenter(viewInterface: V): T private fun createViewInterface(): V { return /* something */ } } 

Также можно использовать любые функции и свойства верхнего уровня.