swift Java/Kotlin中返回值的属性

k4ymrczo  于 2023-06-21  发布在  Swift
关注(0)|答案(3)|浏览(112)

这是一个非常基本的问题,但我还没有找到任何关于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
非常感谢提前!

66bbxpm5

66bbxpm51#

我不熟悉Swift,但如果我理解正确,闭包/lambda被立即调用以设置属性的初始值,那么这就像下面这样简单:

var someProperty = someValue

如果someValue是一个更复杂的逻辑的结果,不能用简单的表达式表示,那么:

var someProperty: SomeType = run {
    ...
    someValue
}

事实上,提供的Swift代码几乎也是有效的Kotlin代码。我们不必使用run(),我们可以创建一个lambda并立即调用它,就像在Swift中一样:

var someProperty: SomeType = {
    ...
    someValue
}()

然而,这并不被认为是“Kotlin方式”,IntelliJ IDE甚至建议用run()代替它。

xqk2d5yq

xqk2d5yq2#

我认为一个自定义的吸气剂也许是你正在寻找什么?

val someProperty: SomeType
    get() {
        // create a default value for someProperty inside this closure
        // someValue must be of the same type as SomeType
        return someValue
    }
whlutmcx

whlutmcx3#

你提供的swift示例实际上类似于Kotlin中的自定义getter。您也可以在Kotlin中使用自定义getter来实现相同的结果。

val someProperty: SomeType
    get() {
        //preform some operations
        return sometype
    }

相关问题