
Photo by
dngri
Swiftで行こう!-Protocol(要件追加)
まずはmutatingを必要とする場合です。
構造体structでは基本的に値を変えることはない。もし変えるように作るときはmutatingとつけてfunc関数を定義します。
structのためのprotocolを作る場合でもfuncの前にmutatingをつけて定義します。
protocol Togglable {
mutating func toggle()
}
として、使うときは、
enum OnOffSwitch: Togglable {
case off, on
mutating func toggle() {
switch self {
case .off:
self = .on
case .on:
self = .off
}
}
}
という風に書いていきます。
実行した場合は
var lightSwitch = OnOffSwitch.off
lightSwitch.toggle()
lightSwitch.toggle()
lightSwitch.toggle()
とすると、
off,on,of,onと順番に入れ替わります。
次にイニシャライザを要件とする場合です。
protocol SomeProtocol {
init(someParameter: Int)
}
classを作ってみます。
class SomeClass: SomeProtocol {
required init(someParameter: Int) {
print(someParameter)
}
}
簡単にインスタンス作ってみます。
var some = SomeClass(someParameter: 9)
とすると、
9
が出力されます。