Swift基礎Part5 プロトコル、サブスクリプト、エクステンション


プロトコル

Javaにおけるinterfaceです。実務で使う場合結構大事かも。


//protocol名はアッパーキャメルでなく、先頭の文字を小文字にする
protocol myProtocol {
    func getStr()->String
}

class MyImpl:myProtocol{
    //override修飾子は不要
    func getStr() -> String {
        return "hoge"
    }
}

let instance:myProtocol=MyImpl() //変数をInterface型にして疎結合に保ついつものやつ
print(instance.getStr())

サブスクリプト

JavaScriptでいうところのブラケット演算子でメソッドを呼び出す書き方。


class MyMathCalc{
    
    subscript(x:Int)->Bool{
        return x%2==0
    }
}

let calc:MyMathCalc=MyMathCalc()
calc[1] //->false
calc[10] //->true

エクステンション

クラス本体を修正せずにクラスに機能を追加できます。
何やら黒魔術の臭いがしますね。

extension String{
    func sayHello(){ // Swift標準クラスのStringにsayHelloメソッドを追加
        print("Hello!")
    }
}

let str:String="hoge"
str.sayHello() //呼び出し

私は、この本を使って勉強しています。