這是一個非常基本的問題,但我還沒有找到關于 SO 的任何答案。
我只是好奇,Java 或 Kotlin 中是否有相應的方法來撰寫具有回傳值的屬性,例如在 Swift 中:
class SomeClass {
let someProperty: SomeType = {
// create a default value for someProperty inside this closure
// someValue must be of the same type as SomeType
return someValue
}()
}
檔案鏈接:https : //docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID232
提前謝謝了!
uj5u.com熱心網友回復:
我不熟悉 Swift,但如果我正確理解了閉包/lambda 被立即呼叫以設定屬性的初始值,那么這很簡單:
var someProperty = someValue
如果someValue是無法表示為簡單運算式的更復雜邏輯的結果,則:
var someProperty: SomeType = run {
...
someValue
}
事實上,提供的 Swift 代碼幾乎也是有效的 Kotlin 代碼。我們不必使用run(),我們可以創建一個 lambda 并立即呼叫它,就像在 Swift 中一樣:
var someProperty: SomeType = {
...
someValue
}()
但是,這不被認為是“Kotlin 方式”,IntelliJ IDE 甚至建議將其替換為run().
uj5u.com熱心網友回復:
我認為自定義吸氣劑可能是您正在尋找的?
val someProperty: SomeType
get() {
// create a default value for someProperty inside this closure
// someValue must be of the same type as SomeType
return someValue
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/372683.html
