gpt4 book ai didi

swift - Swift 3 中的惰性属性与函数

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

    struct Person
{
var personName:String?
init(name:String) {
personName=name
}

lazy var greetLazy:String =
{
return "Hello \(self.personName!)"
}()

func greetFunc()->String
{
return "Hello \(self.personName!)"
}
}

var person:Person=Person(name:"")
print(person.greetLazy)
print(person.greetFunc())

我创建了 2 个东西,即一个惰性属性和一个函数来做同样的事情。现在它说 greetLazy 的值只会在第一次访问时计算,所以当我使用 person.greetLazy 访问它时,它会打印到控制台,这就是 lazy 应该是什么意思是

我的问题是在函数的情况下,只有当我访问函数时才会返回值。它不会预先计算它。那么在那种情况下,两者之间有什么区别呢?

最佳答案

Swift 中惰性属性的全称是lazy stored property,意思是属性的值在第一次需要的时候一计算出来就存储起来。当您再次引用相同的属性时,不会执行额外的计算。

另一方面,函数的结果是在您每次调用该函数时计算的。

这是您修改后的代码,证明了这一点:

struct Person {
var personName:String?
init(name:String) {
personName=name
}

lazy var greetLazy:String = {
print("Computing property...")
return "Hello \(self.personName!)"
}()

func greetFunc()->String
{
print("Computing function...")
return "Hello \(self.personName!)"
}
}

var person:Person=Person(name:"")
print(person.greetLazy)
print(person.greetFunc())
print(person.greetLazy)
print(person.greetFunc())

上面的 "Computing property..." 只打印一次,而 "Computing func..." 打印了两次。

关于swift - Swift 3 中的惰性属性与函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44344078/

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