Swift靜態方法

與靜態屬性相似,Swift中還定義了靜態方法,也稱爲類型方法,所謂「類型」是指枚舉、結構體和類。靜態方法定義的方法也是與靜態屬性相似的,枚舉和結構體的靜態方法使用的關鍵字是static,類的靜態方法使用的關鍵字是class。
1、結構體中靜態方法
下面咱們先看一個結構體靜態方法的示例,代碼以下:
php

[html] view plaincopyhtml

  1. struct Account {  swift

  2.       

  3.     var owner : String = "Tony"                 //帳戶名   ①  微信

  4.     static var interestRate : Double = 0.668    //利率    ②  網站

  5.       

  6.     static func interestBy(amount : Double) -> Double {  ③  spa

  7.   

  8.   

  9.         return interestRate * amount  .net

  10.     }  rest

  11.       

  12.     func messageWith (amount : Double) -> String {   ④  orm

  13.           

  14.         var interest = Account.interestBy(amount)  htm

  15.         return "\(self.owner) 的利息是\(interest)"  

  16.           

  17.     }  

  18. }  

  19.   

  20.   

  21. //調用靜態方法  

  22. println(Account.interestBy(10_000.00))  ⑤  

  23.   

  24.   

  25. var myAccount = Account()   ⑥  

  26. //調用實例方法  

  27. println(myAccount.messageWith (10_000.00))  ⑦  



上述代碼是定義Account結構體,第①行代碼聲明瞭實例屬性owner。第②行代碼聲明瞭靜態屬性interestRate。第③行代碼是定義靜態方法interestBy,靜態方法與靜態計算屬性相似,它不能訪問實例屬性或實例方法。
第④行是定義實例方法messageWith,實例方法能訪問實例屬性和方法,也能訪問靜態屬性和方法。在該方法中咱們使用self.owner語句,其中self是一個隱藏屬性,指代當前類型實例,通常狀況下咱們不要使用它,除非屬性名與變量或常量名發生衝突。
提示 Swift的靜態方法中也能使用self,這在其餘面向對象的計算機語言中是不容許的。此時self表示當前數據類型,不表明枚舉、結構體或類的實例。
2、枚舉中靜態方法
下面咱們再看一個枚舉靜態方法的示例,代碼以下:

[html] view plaincopy

  1. enum Account {  

  2.       

  3.     case 中國銀行  

  4.     case 中國工商銀行  

  5.     case 中國建設銀行  

  6.     case 中國農業銀行  

  7.       

  8.     static var interestRate : Double = 0.668 //利率   ①  

  9.       

  10.     static func interestBy(amount : Double) -> Double {  ②  

  11.         return interestRate * amount  

  12.     }  

  13. }  

  14.   

  15.   

  16. //調用靜態方法  

  17. println(Account.interestBy(10_000.00 ))     ③  



上述代碼是定義Account枚舉,第①行代碼聲明瞭靜態屬性interestRate。第②行代碼是定義靜態方法interestBy,靜態方法與靜態計算屬性相似,它不能訪問實例屬性或實例方法。第③行代碼是調用靜態方法。
從示例能夠看出,結構體和枚舉的靜態方法使用定義沒有區別。
3、類中靜態方法
下面咱們再看一個類方法的示例,代碼以下:

[html] view plaincopy

  1. class Account {  

  2.       

  3.     var owner : String = "Tony"                 //帳戶名  

  4.   

  5.   

  6.     class func interestBy(amount : Double) -> Double {   ①  

  7.         return 0.8886 * amount  

  8.     }  

  9. }  

  10.   

  11.   

  12. //調用靜態方法  

  13. println(Account.interestBy(10_000.00 )) ②  



上述代碼是定義Account類,第①行代碼是使用關鍵字class定義靜態方法interestBy,靜態方法與靜態計算屬性相似,它不能訪問實例屬性或實例方法。第②行代碼是調用靜態方法。


更多內容請關注國內第一本Swift圖書《Swift開發指南》

本書交流討論網站:http://www.51work6.com/swift.php

歡迎加入Swift技術討論羣:362298485

歡迎關注智捷iOS課堂微信公共平臺

相關文章
相關標籤/搜索