协议就是申明一些属性方法下标,然后让类,结构体,枚举去遵守,默认协议的内容必须全部接受,协议不能设置默认值
protocol PersonDelegate {
func go()
var name:String{ get set }
var des:String{ get }
subscript(index:Int) -> Int{ get set }
}
上述就是一个简单的协议,定义了一个函数go,两个属性,name,des,一个下标
协议中的属性
协议的属性只能用var来声明,实现的时候根据后面跟的类型来,类型只有{ get }(只读) { get set }(可读可写)两种,其中get是可以用let声明的,后面只需要用不小于声明的权限即可,比如{ get },也是可以用读写来实现的,所以某种意义来说{ get } {get set}的区别只在于get 可以声明get 也可以声明get set,而可读可写只能声明对应的可读可写
protocol PersonDelegate {
var name:String{ get set }
var des:String{ get }
}
struct Person : PersonDelegate {
var name: String
var des: String
}
var p = Person(name: "", des: "")
p.des = "这是小明"
print(p.des)
上述代码就是属性对应的实现,声明的des实际是只读的,但仍然可以声明成可读可写