在协议中拥有财产的目的是什么?

时间:2017-02-01 11:35:43

标签: swift swift-protocols

我创建了一个协议,如下所示

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链接,所以只是开发人员不这样做   犯错误&必须包含确认协议,因为这些对象   肯定会有一个'名字'?

1 个答案:

答案 0 :(得分:0)

如果您拥有协议中的属性,并且您的某个类确认了此协议,则可以确保您的课程中也有该协议具有的功能。

如果您有两个不同的类来确认此协议,那么在其他类别的某些函数中,您有:

func makeSomething(item:YourProtocolHere){
    //you can be sure and use without any cast
    item.protocolproperty
}