Swift擴展(Extension)

在現有類和結構體的類型基礎上,擴展新的功能。 語法:html

[html] view plaincopyui

  1. extension SomeType{  this

  2. // new functionality to add to SomeType goes here  spa

  3. }  .net

  4. An extension can extend an existing type to make itadopt one or more protocols.Where this is the case,  orm

  5. the protocol names are written in exactly the sameway as for a class or structure:  htm

  6. extension          SomeType:            SomeProtocol,AnotherProtocol {  blog

  7. // implementation of protocol requirements goes here  three

  8. }  ci


計算屬性

[html] view plaincopy

  1. extension Double{  

  2. var km: Double { return self * 1_000.0 }  

  3. var m: Double { return self }  

  4. var cm: Double { return self / 100.0}  

  5.  var mm: Double { return self /1_000.0 }  

  6. var ft: Double { return self / 3.28084 }  

  7. }  

  8. let oneInch = 25.4.mm  

  9. println("One inch is \(oneInch) meters")  

  10. // prints "One inch is 0.0254 meters"  

  11. let threeFeet =3.ft  

  12. println("Three feet is \(threeFeet) meters")  

  13. // prints "Three feet is0.914399970739201 meters"  

  14. let aMarathon = 42.km + 195.m  

  15. println("Amarathon is \(aMarathon) meters long")  

使用構造器

[html] view plaincopy

  1. struct Size {  

  2. varwidth = 0.0, height = 0.0  

  3. }  

  4. struct Point {  

  5. var x = 0.0, y = 0.0  

  6. }   

  7. struct Rect {  

  8. var origin = Point()  

  9. var sizeSize()  

  10. }  

  11. extension Rect{  

  12. init(center: Point, size: Size) {  

  13. let originX = center.x - (size.width / 2) let originY = center.y - (size.height/ 2) self.init(origin: Point(x: originX, y: originY),  

  14. size: size)//調用 Rect 結構體構造器}   

  15. }  

  16. let centerRect = Rect(center: Point(x: 4.0, y: 4.0), size: Size(width: 3.0, height: 3.0))  

方法擴展

[html] view plaincopy

  1. struct Size {   

  2. varwidth = 0.0, height = 0.0  

  3. }  

  4. struct Point {  

  5. var x = 0.0, y = 0.0  

  6. }  

  7. struct Rect {  

  8. var origin = Point()  

  9. var sizeSize()  

  10. }  

  11. extension Rect{  

  12. init(center: Point, size: Size) {  

  13. let originX = center.x - (size.width / 2) let originY = center.y - (size.height/ 2) self.init(origin: Point(x: originX, y: originY),  

  14. size: size)//調用 Rect 結構體構造器  

  15. }  

  16. }  

  17. let centerRect = Rect(center: Point(x: 4.0, y: 4.0), size: Size(width: 3.0, height: 3.0))  


Swift交流討論論壇論壇:http://www.cocoagame.net

歡迎加入Swift技術交流羣:362298485

相關文章
相關標籤/搜索