Swiftのextension
クラス、構造体、列挙型などを拡張することができる
クラス、構造体、列挙型をprotocolに適合させることができる
クラス、構造体、列挙型などを拡張することができる
もっと具体的にいうと、既存のクラスに新しくmethodを生やすことができる?
これが有効なスコープはどこ?
それがわからないと、既存のクラスに直接定義を増やすのこととの違いがわからん
もしくは、標準ライブラリとか自作でないものに対してのみ使う?
overrideもない
ないってできないって意味?
swiftextension Bool {
var number: Int { return self ? 1 : 0 }
}
where
句を使うことで型成約をつけることもできる
refswiftextension Array where Element == Int {
func sum() -> Int {
return reduce(0, +)
}
}
protocol extension
Rustのstructにimplでmethodを生やすやつとほぼ同じだ

swiftprotocol Party {
var name: String { get }
var lv: Int { get }
var HP: Int { get }
}
extension Party {
var info: String {
return "名前: \(name), レベル: \(lv), HP: \(HP)"
}
}
例えばprotocolに対し、デフォルト実装を用意しておける
swift// `Animal`はprotcol
extension Animal {
func bark() -> String {
return "吠えた!"
}
}
これにも where
句による制限がある
クラス、構造体、列挙型をprotocolに適合させることができるらしい
いみふ
参考