與靜態屬性相似,Swift中還定義了靜態方法,也稱爲類型方法,所謂「類型」是指枚舉、結構體和類。靜態方法定義的方法也是與靜態屬性相似的,枚舉和結構體的靜態方法使用的關鍵字是static,類的靜態方法使用的關鍵字是class。
1、結構體中靜態方法
下面咱們先看一個結構體靜態方法的示例,代碼以下:
php
[html] view plaincopyhtml
struct Account { swift
var owner : String = "Tony" //帳戶名 ① 微信
static var interestRate : Double = 0.668 //利率 ② 網站
static func interestBy(amount : Double) -> Double { ③ spa
return interestRate * amount .net
} rest
func messageWith (amount : Double) -> String { ④ orm
var interest = Account.interestBy(amount) htm
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表示當前數據類型,不表明枚舉、結構體或類的實例。
2、枚舉中靜態方法
下面咱們再看一個枚舉靜態方法的示例,代碼以下:
[html] view plaincopy
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,靜態方法與靜態計算屬性相似,它不能訪問實例屬性或實例方法。第③行代碼是調用靜態方法。
從示例能夠看出,結構體和枚舉的靜態方法使用定義沒有區別。
3、類中靜態方法
下面咱們再看一個類方法的示例,代碼以下:
[html] view plaincopy
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開發指南》
本書交流討論網站:http://www.51work6.com/swift.php
歡迎加入Swift技術討論羣:362298485
歡迎關注智捷iOS課堂微信公共平臺