Swift 介面和擴充套件(Protocol&Extension)
阿新 • • 發佈:2019-02-06
開發經常用到這兩個,從實現的角度來講他們的功能吧!
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()
列舉也可以的:
Extesion: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()
使用extension來為現有的型別新增功能,比如新增一個計算屬性的方法。你可以使用擴充套件
來給任意型別新增協議,甚至是你從外部庫或者框架中匯入的型別。
extension Int: ExampleProtocol {
var simpleDescription: String{
return "Int"
}
mutating func adjust() {
self += 10
}
}
使用起來特別方便,好好學習吧,加油!