プロトコルとエクステンション(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 で絞る