gpt4 book ai didi

swift - Swift 属性的多个 getter ?

转载 作者:搜寻专家 更新时间:2023-11-01 07:14:56 25 4
gpt4 key购买 nike

在 Swift 3 中有没有什么方法可以让一个类具有一个计算属性,该属性在第一次计算时是昂贵的,但之后保持不变,有单独的 getters(一个初始的,然后每个后续请求的另一个)?即

class Example {
var computationallyIntensive: String? {
return try? String(contentsOf: unlistedFile, encoding: .utf8)
}
}

我知道初始化器,但是这个属性不需要在创建类时初始化。

理想情况下,第二个调用会比第一个调用返回得更快:

let test = Example()
if test.computationallyIntensive == "base case" {
print(test.computationallyIntensive)
}

最佳答案

使用 Lazy Stored Property :

lazy var computationallyIntensive: String? = computeComputationallyIntensive()

func computeComputationallyIntensive() -> String? {
return try? String(contentsOf: unlistedFile, encoding: .utf8)
}

computeComputationallyIntensive 的调用(如果有)将在对 computationallyIntensive 的第一次调用期间发生。

关于swift - Swift 属性的多个 getter ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42685401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com