Skip to main content

プロトコルとエクステンション(extension)

Swift

プロトコルにはメソッドを作れないので、メソッドを定義するのに extension が使われる。

swift
protocol Protocol01 {
var name: String { get set }
}
extension Protocol01 {
func printName() {
print("name is \(name)")
}
}

プロトコル専用でなく Type に使える仕組みではないので、例えば Int にメソッドをつけることができたりする。(といった使い方をするのは可読性を悪くしそうだが)

swift
extension Int {
func getDoubleValue() -> Int {
self * 2
}
}
3.getDoubleValue() // -> 6

Generic なプロトコルで 対象の型を絞って extension したい場合は where T == Int のように where で絞る