Swiftのextension
クラス、構造体、列挙型などを拡張することができる
クラス、構造体、列挙型をprotocolに適合させることができる
クラス、構造体、列挙型などを拡張することができる
もっと具体的にいうと、既存のクラスに新しくmethodを生やすことができる?
これが有効なスコープはどこ?
それがわからないと、既存のクラスに直接定義を増やすのこととの違いがわからん
もしくは、標準ライブラリとか自作でないものに対してのみ使う?
overrideもない
ないってできないって意味?
code:swift
extension Bool {
var number: Int { return self ? 1 : 0 }
}
where句を使うことで型成約をつけることもできる ref code:swift
extension Array where Element == Int {
func sum() -> Int {
return reduce(0, +)
}
}
protocol extension
Rustのstructにimplでmethodを生やすやつとほぼ同じだmrsekut.icon
code:swift
protocol Party {
var name: String { get }
var lv: Int { get }
var HP: Int { get }
}
extension Party {
var info: String {
return "名前: \(name), レベル: \(lv), HP: \(HP)"
}
}
例えばprotocolに対し、デフォルト実装を用意しておける
code:swift
// Animalはprotcol
extension Animal {
func bark() -> String {
return "吠えた!"
}
}
これにもwhere句による制限がある
クラス、構造体、列挙型をprotocolに適合させることができるらしい
いみふ
参考