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