gpt4 book ai didi

swift - 在 Swift 中,创建符合协议(protocol)要求的对象类型(例如类)时,是否不必使用 getter 和 setter?

转载 作者:行者123 更新时间:2023-11-28 12:09:55 26 4
gpt4 key购买 nike

protocol UserType {
var name: String { get }
var age: Int { get set }


struct Person: UserType {
var name: String //<- why is this okay?
var age: Int //<- why is this okay? dont we need a getter setter
}

let somePerson = Person(name: "Billy", age: 22)

为什么在上面的示例中,我们不使用 get 构造或 set 构造年龄和 get 构造名字?是不是因为在协议(protocol)中,当属性被称为“{get set }”时,本质上意味着它必须能够被读取并且必须能够被更改,这可以通过 a 的语法中的声明来完成存储属性?

谢谢!

最佳答案

protocol UserType {
var name: String { get }
var age: Int { get set }
}

要理解的重要一点是 { get }{ get set } 只是符号。它们与“ setter和getter ”无关。它们只是向编译器描述协议(protocol)要求的方式。 (您可能会争辩说该符号令人困惑或误导,但这是我们所拥有的,因此我们必须接受它。)

所以,基本上,所有这些都是:

  • 采纳者必须声明一个 name String 实例属性。

  • 采纳者还必须声明一个 age Int 实例属性,并且该属性必须是可写的。

就是这个意思。那么,您已经满足了您的采用者(人)的那些要求。你的代码是合法的。结束。

关于swift - 在 Swift 中,创建符合协议(protocol)要求的对象类型(例如类)时,是否不必使用 getter 和 setter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48712047/

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