开发经常用到这两个,从实现的角度来讲他们的功能吧!
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的博客