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