gpt4 book ai didi

swift - Swift 中协议(protocol)内的属性

转载 作者:行者123 更新时间:2023-11-30 10:14:14 24 4
gpt4 key购买 nike

我学得很快。我需要问在协议(protocol)中声明属性时,其真正用途是什么?

import UIKit

protocol parentProtocol
{
var firstName:String {get}
func fullName() -> String
}

class childClass:parentProtocol
{
var firstName = ""
func fullName() -> String {
firstName = "rajesh darak"
return firstName
}
}

var c = childClass()
c.fullName()

虽然我将 firstName 声明为 get(即只读),但在函数本身中,我可以更改 firstName 的值。

最佳答案

协议(protocol)parentProtocol声明了一个要求:任何符合它的东西都必须有一个可获取的属性firstName。这并不是说任何继承的东西都必须只能可获取。

你为什么想要这种行为?嗯,这是一种设计选择,但这里有一个例子说明它的用处:CollectionTypeCollectionType 有一个属性count。现在,对于您想要在 CollectionType 上执行的某些操作,您需要能够访问 count。然而,没有必要限制从它继承的东西。例如,Array 的计数是只读的:

var ar = [1, 2, 3]

ar.count = 5 // What's supposed to happen here?!

但这并不意味着每个 CollectionType 都必须具有只读计数。 Repeat,例如有一个变量count:

var re = Repeat(count: 3, repeatedValue: 0)   // [0, 0, 0]

re.count = 5 // [0, 0, 0, 0, 0]

并且您能够更改它是完全有意义的。

关于swift - Swift 中协议(protocol)内的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31136948/

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