about 6 years ago
Extensions 可以對已存在的 class, structure, enumeration 或是 protocol 新增功能,
但要注意不能複寫原有的功能。
基本宣告
class MyClass {
}
extension MyClass {
}
新增運算 property
class MyClass {
var num = 123
}
extension MyClass {
var test: Int {
get{
return num
}
set {
num += newValue
}
}
}
新增 initializers
需要注意的是 Class 的 extension 只能新增 convenience initializer。
Class MyClass {
}
extension MyClass {
convenience init(para: Int) {
self.init()
}
}
新增 Methods
class MyClass {
}
extension MyClass {
func test {
print("test")
}
}
新增 mutating methods
struct MyStruct {
var test = 123
}
extension MyStruct {
mutating func mu(para: Int) {
self.test = para
}
}
新增 subscripts
class MyClass {
}
extension MyClass {
subscript(para: String) -> String {
return para
}
}
新增巢狀類型
class MyClass {
}
extension MyClass {
enum MyEnum {
case a
case b
}
}