๐ดProtocol Extensions
provide default implementations. (dynamic method dispatch) ๐ ๐ ๅ่
add new functionalities: (static method dispatch)
add methods
add (convenience) initializers (but not convenience override init)
add subscripts
add computed properties
make existing types conform to protocol.
ๅ๏ผprotocol extension ่ฃก้ขๅฏไปฅๅ nested types ๅ๏ผ
็ญ๏ผ็ฎๅ็ไพไธ่กโ๏ธ (๐ ๐ฃ ่จ่ซ)
Extensions can add new nested types to existing class, struct, and enum. (but not protocol extensionsโ) ๐Nested Types in Extensions
Protocol Definition vs. Protocol Extension
define requirements for conforming types. (๐ไพไธ)
Conditional Protocol Extensions
// โญโโโโโ condition โโโโโโโฎ
extension Collection where Element: Equatable {
func allEqual() -> Bool {
for element in self {
if element != self.first { return false }
}
return true
}
}
// test run
let numbers = [100, 100, 100, 100, 100]
numbers.allEqual() // true
Last updated
Was this helpful?