gpt4 book ai didi

swift - 没有getter的Swift 3 lazy var的作用

转载 作者:搜寻专家 更新时间:2023-10-31 22:05:34 25 4
gpt4 key购买 nike

当我不使用 getter 或 setter 时,我想知道 lazy 关键字的含义。看这段代码:

class ViewController: UIViewController
{
lazy var toto = 5
}

编译器接受了 lazy 关键字,但我不知道为什么。懒惰意味着只有在阅读时才会计算该值。但是不需要为整数值计算任何东西。

最佳答案

lazy 意味着 存储属性 的初始值在第一次访问时被评估和赋值(所以这实际上与 getters 无关或与计算 属性一起使用的 setter)。

lazy var toto = ... some expression evaluating to an `Int` ...

定义一个惰性 Int 属性。

lazy 可用于延迟初始值的计算直到需要该属性,例如如果那个评价是“昂贵”或有副作用。

但是从语言/编译器的角度来看,右边的初始值 可以是任意表达式。 它是常量还是涉及函数调用的“复杂”表达式并不重要。

lazy var a = 5 // A constant
lazy var b = someFunctionReturningAnInt() // Function call
lazy var c = { _ -> Int in
return 42
}() // Immediately evaluated closure

都是有效的定义。使用具有恒定初始值的 lazy 没有任何优势,但它是有效的 Swift。

关于swift - 没有getter的Swift 3 lazy var的作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41246207/

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