見出し画像

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

が出力されます。


この記事が気に入ったらサポートをしてみませんか?