这是一个非常基本的问题,但我还没有找到任何关于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
非常感谢提前!
3条答案
按热度按时间66bbxpm51#
我不熟悉Swift,但如果我理解正确,闭包/lambda被立即调用以设置属性的初始值,那么这就像下面这样简单:
如果
someValue
是一个更复杂的逻辑的结果,不能用简单的表达式表示,那么:事实上,提供的Swift代码几乎也是有效的Kotlin代码。我们不必使用
run()
,我们可以创建一个lambda并立即调用它,就像在Swift中一样:然而,这并不被认为是“Kotlin方式”,IntelliJ IDE甚至建议用
run()
代替它。xqk2d5yq2#
我认为一个自定义的吸气剂也许是你正在寻找什么?
whlutmcx3#
你提供的swift示例实际上类似于Kotlin中的自定义getter。您也可以在Kotlin中使用自定义getter来实现相同的结果。