generated at
Swiftのextension

クラス、構造体、列挙型などを拡張することができる
SwiftのProtocolの拡張もできる
クラス、構造体、列挙型をprotocolに適合させることができる
もしかして、Haskellの型クラスとかRustのTraitみたいなやつ?


クラス、構造体、列挙型などを拡張することができる
もっと具体的にいうと、既存のクラスに新しくmethodを生やすことができる?
prototype的な?
これが有効なスコープはどこ?
それがわからないと、既存のクラスに直接定義を増やすのこととの違いがわからん
もしくは、標準ライブラリとか自作でないものに対してのみ使う?
継承とは異なり新しいクラスを定義したりはしない
overrideもない
ないってできないって意味?
swift
extension Bool { var number: Int { return self ? 1 : 0 } }
where 句を使うことで型成約をつけることもできる ref
ますます型クラスっぽい
swift
extension Array where Element == Int { func sum() -> Int { return reduce(0, +) } }




SwiftのProtocolの拡張もできる
protocol extension
Rustのstructにimplでmethodを生やすやつとほぼ同じだmrsekut
ref
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に対し、デフォルト実装を用意しておける
swift
// `Animal`はprotcol extension Animal { func bark() -> String { return "吠えた!" } }
これにも where 句による制限がある




クラス、構造体、列挙型をprotocolに適合させることができるらしい
いみふ




参考