Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 在协议中拥有财产的目的是什么?_Swift_Swift Protocols - Fatal编程技术网

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

Swift 在协议中拥有财产的目的是什么?,swift,swift-protocols,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.

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

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作为一个列表器。当我在这里添加属性时,为什么我会在protcol中使用属性。请回答

编辑:就像在链接中阅读一样,只是开发者不需要 犯错误&必须包括确认协议,因为这些对象 肯定会有“名字”吗


如果您在protocol中有属性,并且您的一个类确认了该协议,那么您可以确保您的类中也有该协议所具有的属性

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

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