我可以在 Swift 中的 get 块中设置计算 属性 吗?

Can I set computed property in get block in Swift?

var myProperty: PropertyType {
 get {
     if let alreadyComupted = savedValue {
       return alreadyComputed
     }
    return computeAndSave(someParam: "Hello")
 }
 set {
// is it possible to move *computeAndSave* body here somehow so I can call *set* method in above get definition?
 }
}

private var savedValue: PropertyType?
private func computeAndSave(someParam: SomeType) -> PropertyType {
// perform computations and assign value to *savedValue*
}

我对 swift 语言还很陌生,不确定这是否是编码实践的标准。

基本上您是在描述一个 lazy 变量。当第一次获取值时,它计算它的初始值设定项一次,并从那时起使用存储的值(除非它被替换)。您可以将其与定义和调用初始化程序结合使用:

lazy var myProperty: PropertyType = {
    let p = // perform some expensive one-time calculation here
    return p
}()

结果是 第一次 请求 myProperty 的值时,初始化方法运行;但是之后使用了之前的结果,初始化方法再也不会运行了。