Swift中的惰性变量是否计算不止一次?

Swift中的惰性变量是否计算不止一次?,第1张

概述Swift中的惰性变量是否计算不止一次?我的印象是他们取而代之: if (instanceVariable) { return instanceVariable;}// set up variable that has not been initialized Objective-C的范例(懒惰实例化). 他们在做什么?基本上只有在应用程序第一次请求变量时才调用一次,那么只是返回计算 Swift中的惰性变量是否计算不止一次?我的印象是他们取而代之:
if (instanceVariable) {    return instanceVariable;}// set up variable that has not been initialized

Objective-C的范例(懒惰实例化).

他们在做什么?基本上只有在应用程序第一次请求变量时才调用一次,那么只是返回计算的内容?

或者每次都像正常的计算属性一样调用?

我问的原因是因为我基本上想要一个可以访问其他实例变量的Swift中的计算属性.说我有一个名为“fullname”的变量,它只是连接firstname和lastname.我怎么会在斯威夫特呢?看起来像懒惰变量是唯一的去除方式,如在正常的计算的vars(非懒惰)我无法访问其他实例变量.

所以基本上

斯威夫特的懒惰变种不止一次叫?如果是,如何创建一个可以访问实例变量的计算变量?如果没有,如果我只想要一个变量计算一次出于性能原因,我该如何做?

懒惰变量只能计算一次,第一次使用它们.之后,他们就像一个正常的变量.

这在 *** 场上很容易测试:

class LazyExample {    var firstname = "John"    var lastname = "Smith"    lazy var lazyFullname : String = {        [uNowned self] in        return "\(self.firstname) \(self.lastname)"    }()}let lazyInstance = LazyExample()println(lazyInstance.lazyFullname)// John SmithlazyInstance.firstname = "Jane"println(lazyInstance.lazyFullname)// John SmithlazyInstance.lazyFullname = "???"println(lazyInstance.lazyFullname)// ???

如果您以后要重新计算,请使用计算属性(如果支付变量很贵,则使用后备变量) – 就像您在Objective-C中一样.

总结

以上是内存溢出为你收集整理的Swift中的惰性变量是否计算不止一次?全部内容,希望文章能够帮你解决Swift中的惰性变量是否计算不止一次?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1040099.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存