一 可以為類添加新功能
UIViewController
extension UIViewController {
// 為 UIViewController 添加的新功能寫(xiě)到這里
}
Double
extension Double {
var km: Double { return self * 1_000.0 }
var m : Double { return self }
var cm: Double { return self / 100.0 }
var mm: Double { return self / 1_000.0 }
var ft: Double { return self / 3.28084 }
var sq: Double { return self * self }
}
ViewController
extension ViewController{
func printfChars()
{
print("I am char")
}
}
二 可變實(shí)例方法(Mutating Instance Methods)
通過(guò)擴(kuò)展添加的實(shí)例方法也可以修改該實(shí)例本身叁熔。結(jié)構(gòu)體和枚舉類型中修改 self 或其屬性的方法必須將該實(shí)例方法標(biāo)注為 mutating蚊俺,正如來(lái)自原始實(shí)現(xiàn)的可變方法一樣竿痰。
下面的例子為 Swift 的 Int 類型添加了一個(gè)名為 square 的可變方法,用于計(jì)算原始值的平方值:
改變Int 值本身
extension Int {
mutating func square() {
self = self * self
}
}
三 嵌套類型(Nested Types)
擴(kuò)展可以為已有的類家浇、結(jié)構(gòu)體和枚舉添加新的嵌套類型:
extension Int {
enum Kind {
case Negative, Zero, Positive
}
var kind: Kind {
switch self {
case 0:
return .Zero
case let x where x > 0:
return .Positive
default:
return .Negative
}
}
}
// 在ViewController: UIViewController 中
// viewDidLoad
self.printfChars()
let oneInch = 25.4.mm
print("One inch is \\(oneInch) meters") // One inch is 0.0254 meters
let dou = 23.4.sq
print("\\(dou)") // 547.56
let numbers = [1,2,4,5,6,3,0,-54,-65]
self.printIntegerKinds(numbers) // + + + + + + 0 - -
var intNumb = 5
intNumb.square()
print("\\(intNumb)") // 25
該例子為 Int
添加了嵌套枚舉。這個(gè)名為Kind
的枚舉表示特定整數(shù)的類型。具體來(lái)說(shuō)误趴,就是表示整數(shù)是正數(shù)、零或者負(fù)數(shù)务傲。
這個(gè)例子還為 Int
添加了一個(gè)計(jì)算型實(shí)例屬性凉当,即 Kind
,用來(lái)根據(jù)整數(shù)返回適當(dāng)?shù)?Kind
枚舉成員树灶。
現(xiàn)在纤怒,這個(gè)嵌套枚舉可以和任意 Int
值一起使用了:
func printIntegerKinds(numbers: [Int]) {
for number in numbers {
switch number.kind {
case .Negative:
print("- ", terminator: "")
case .Zero:
print("0 ", terminator: "")
case .Positive:
print("+ ", terminator: "")
}
}
print("")
}
---------------------------------------
走心文章, 值得點(diǎn)贊 ---文/夏天然后
微博-點(diǎn)我@夏天是個(gè)大人了 || QQQ: 498143780