我创建了一个协议,如下所示
protocol FullyNamed {
var fullName: String { get }
}
在我的班级下面确认这个协议
class Starship: FullyNamed {
var prefix: String?
var name: String
init(name: String, prefix: String? = nil) {
self.name = name
self.prefix = prefix
}
var fullName: String {
return (prefix != nil ? prefix! + " " : "") + name
}
}
var ncc1701 = Starship(name: "Enterprise", prefix: "USS")
// ncc1701.fullName is "USS Enterprise"
我认为我们在使用函数时使用protcol作为列表器现在当我在这里添加属性时,为什么我会在protcol中使用属性。请回答
编辑:正在阅读This链接,所以只是开发人员不这样做 犯错误&必须包含确认协议,因为这些对象 肯定会有一个'名字'?
答案 0 :(得分:0)
如果您拥有协议中的属性,并且您的某个类确认了此协议,则可以确保您的课程中也有该协议具有的功能。
如果您有两个不同的类来确认此协议,那么在其他类别的某些函数中,您有:
func makeSomething(item:YourProtocolHere){
//you can be sure and use without any cast
item.protocolproperty
}