swift知识技巧搜集

Swift 属性协议

2018-04-27  本文已影响50人  maskerII

属性协议:顾名思义、要求遵从者为指定的名称实现属性,但具体实现是实例属性或类型属性并不关心
可以指定要求实现getter 或 getter+setter 属性必须为变量var

protocol FileAccessProtocol {
    var readOnly :Bool { get }
    var readWrite:Bool { get set}
}

protocol AccessUrlProtocol {
    static var link:String { get }
}

protocol FullNameProtocol {
    var fName:String {get}
    var gName:String {get}
}

struct Student:FullNameProtocol {
    var fName: String
    var gName: String
}

struct Teadcher:FullNameProtocol {
    var fName: String
    var gName: String
}

class Master:FullNameProtocol {
    var fName: String
    var gName: String
    init(fName:String, gName:String) {
        self.fName = fName
        self.gName = gName
    }
    var des : String {
        return self.fName + self.gName
    }
}

var student1 = Student(fName:"王",gName:"小明")
student1.fName
student1.gName

var master1 = Master(fName:"李",gName:"刚")
master1.des


//
class SomeBody : FullNameProtocol {
    var title: String?
    var name: String
    init(title:String?,name:String) {
        self.title = title
        self.name = name
    }
    var fName: String {
        return name
    }
    var gName: String {
        return title ?? "无名小将"
    }
    
    var des:String {
        return self.fName + self.gName
    }
    
    
}

var somebody1 = SomeBody(title:"大帝", name:"亚历山大")
somebody1.fName
somebody1.gName
somebody1.des

var nobody = SomeBody(title:nil, name:"小波")
nobody.fName
nobody.gName
nobody.des


上一篇下一篇

猜你喜欢

热点阅读