1
如果我们有定义为可空构件的延迟初始化
private var foo: Foo? = null
一个成员变量,我们希望当我们调用用的参数(这是需要初始化的Foo)的方法,以对其进行初始化,还有更好的这样做比这更好吗?
fun generateFoo(bar: Bar): Foo {
var localFoo = foo
if (localFoo == null) {
localFoo = Foo(bar)
foo = localFoo
}
return localFoo
}
我正在考虑避免所有的变量赋值。
编辑:略短的版本是在这里,但仍不理想
fun generateFoo(bar: Bar): Foo {
var localFoo = foo ?: Foo(bar)
foo = localFoo
return localFoo
}
在这里有一个局部变量有特别的理由吗? – zsmb13
为了这个目的,没有'懒惰'和/或晚期的init操作符吗? – jdv
懒惰不允许在此处初始化Foo所需的参数。 – Francesc