加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 05:36:46 所属栏目:百科 来源:网络整理
导读: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 Smith

lazyInstance.firstName = "Jane"

println(lazyInstance.lazyFullName)
// John Smith

lazyInstance.lazyFullName = "???"

println(lazyInstance.lazyFullName)
// ???

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读