304
技術社區[雲棲]
Swift靜態方法
與靜態屬性類似,Swift中還定義了靜態方法,也稱為類型方法,所謂“類型”是指枚舉、結構體和類。靜態方法定義的方法也是與靜態屬性類似的,枚舉和結構體的靜態方法使用的關鍵字是static,類的靜態方法使用的關鍵字是class。一、結構體中靜態方法
下麵我們先看一個結構體靜態方法的示例,代碼如下:
struct Account { var owner : String = "Tony" //賬戶名 ① static var interestRate : Double = 0.668 //利率 ② static func interestBy(amount : Double) -> Double { ③ return interestRate * amount } func messageWith (amount : Double) -> String { ④ var interest = Account.interestBy(amount) return "\(self.owner) 的利息是\(interest)" } } //調用靜態方法 println(Account.interestBy(10_000.00)) ⑤ var myAccount = Account() ⑥ //調用實例方法 println(myAccount.messageWith (10_000.00)) ⑦
上述代碼是定義Account結構體,第①行代碼聲明了實例屬性owner。第②行代碼聲明了靜態屬性interestRate。第③行代碼是定義靜態方法interestBy,靜態方法與靜態計算屬性類似,它不能訪問實例屬性或實例方法。
第④行是定義實例方法messageWith,實例方法能訪問實例屬性和方法,也能訪問靜態屬性和方法。在該方法中我們使用self.owner語句,其中self是一個隱藏屬性,指代當前類型實例,一般情況下我們不要使用它,除非屬性名與變量或常量名發生衝突。
提示 Swift的靜態方法中也能使用self,這在其他麵向對象的計算機語言中是不允許的。此時self表示當前數據類型,不代表枚舉、結構體或類的實例。
二、枚舉中靜態方法
下麵我們再看一個枚舉靜態方法的示例,代碼如下:
enum Account { case 中國銀行 case 中國工商銀行 case 中國建設銀行 case 中國農業銀行 static var interestRate : Double = 0.668 //利率 ① static func interestBy(amount : Double) -> Double { ② return interestRate * amount } } //調用靜態方法 println(Account.interestBy(10_000.00 )) ③
上述代碼是定義Account枚舉,第①行代碼聲明了靜態屬性interestRate。第②行代碼是定義靜態方法interestBy,靜態方法與靜態計算屬性類似,它不能訪問實例屬性或實例方法。第③行代碼是調用靜態方法。
從示例可以看出,結構體和枚舉的靜態方法使用定義沒有區別。
三、類中靜態方法
下麵我們再看一個類方法的示例,代碼如下:
class Account { var owner : String = "Tony" //賬戶名 class func interestBy(amount : Double) -> Double { ① return 0.8886 * amount } } //調用靜態方法 println(Account.interestBy(10_000.00 )) ②
上述代碼是定義Account類,第①行代碼是使用關鍵字class定義靜態方法interestBy,靜態方法與靜態計算屬性類似,它不能訪問實例屬性或實例方法。第②行代碼是調用靜態方法。
更多內容請關注國內第一本Swift圖書《Swift開發指南》
本書交流討論網站:https://www.51work6.com/swift.php
歡迎加入Swift技術討論群:362298485
歡迎關注智捷iOS課堂微信公共平台

最後更新:2017-04-03 05:40:09