开发经常用到这两个,从实现的角度来讲他们的功能吧!
protocol
protocol ExampleProtocol {
var simpleDescription: String { get }
mutating func adjust()
}
类、枚举和结构体都可以实现接口。
先看一下类:
class SimpleClass: ExampleProtocol {
var simpleDescription: String = "A very simple class."
var anotherProperty: Int = 69105
func adjust() {
simpleDescription += " Now 100% adjusted."
}
}
var oneSimp = SimpleClass()
oneSimp.adjust()
再看一下结构体:
struct SimpleStructure: ExampleProtocol {
var simpleDescription: String = " struct"
mutating func adjust() {
simpleDescription += "(adjusted)"
}
}
var oneStruct = SimpleStructure()
oneStruct.adjust()
枚举也可以的:
enum SimpleEnum: ExampleProtocol {
case first(String),second(String)
var simpleDescription: String {
get {
switch self {
case .first("first"):
return "first"
default:
return "second"
}
}
set {
switch self {
case .first("first"):
self = .first(newValue)
default:
self = .second(newValue)
}
}
}
mutating func adjust() {
switch self {
case .first:
self = .first("1" + "first")
default:
self = .second("2" + "second")
}
}
}
var oneEnum = SimpleEnum.first("lv")
oneEnum.adjust()
Extesion:
使用 extension 来为现有的类型添加功能,比如添加一个计算属性的方法。你可以使用扩展
来给任意类型添加协议,甚至是你从外部库或者框架中导入的类型。
extension Int: ExampleProtocol {
var simpleDescription: String{
return "Int"
}
mutating func adjust() {
self += 10
}
}
使用起来特别方便,好好学习吧,加油!
如果转载请注明转于:AirZilong的博客