如何实现可传参的方法级别的lazy?


#1

这个提问可能不是很规范,下面是示例:

var a : A? = null
fun xxx(c : Int) {
    if (a == null) {
        a = yyy(c)
    }
}

我相信很多地方都有这种判空并初始化的逻辑,但Kotlin的lazy关键字似乎不能满足这种需求,它仅用于成员变量的懒加载,但懒加载时无法动态传参,即便lazy块中可以使用外部参数,也只能是此类构造函数的参数,而非上述例子中任意方法xxx的参数c。
是否有其他办法实现上述逻辑的简化?或者未来是否有考虑支持呢?


#2
lateinit var text:A
fun xxx(c : Int) {
    a = yyy(c)
	a.invokeFun()
}

京ICP备16022265号-2 Kotlin China 2017 - 2018