前言:
本文是 在 王巍 (onevcat). “Swifter - Swift 必備 Tips (第三版)”。 iBooks. 章節(jié)中的筆記色建。
BankAccount 類代碼
class BankAccount: NSObject {
var balance: Double = 0.0
func deposit(amount: Double) {
balance += amount
}
}
調(diào)用 BankAccount 類的方法
let account = BankAccount()
account.deposit(amount: 100)
// 在這里不能直接調(diào)用 deposit() 會報(bào)錯(cuò)。
// 因?yàn)槟悴荒茉兕愋蜕险{(diào)用一個(gè)實(shí)例方法宦棺。
// 只是引用它瓣距,就像C中的一個(gè)函數(shù)指針。
// depositor 的類型 是 :(BankAccount) -> (Double) -> ()
let depositor = BankAccount.deposit
depositor(account)(100)
(BankAccount) -> (Double) -> ()
換句話說:
* 該函數(shù)具有單一參數(shù)代咸,
* 一個(gè) BankAccount 實(shí)例
* 并返回另一個(gè)函數(shù)蹈丸。
后一個(gè)函數(shù)
* 需要一個(gè)Double 并不返回任何東西
希望記住:
* Swift中的一個(gè)實(shí)例方法:
* 只是一個(gè)類型方法呐芥,它將實(shí)例作為一個(gè)參數(shù)逻杖,并返回一個(gè)將被應(yīng)用于實(shí)例的函數(shù)。
當(dāng)然思瘟,下面的兩句代碼荸百,可以進(jìn)行下改變,這樣可以使 '類型方法 ' 和 '實(shí)例方法' 之前的關(guān)系更加清晰
let depositor = BankAccount.deposit
depositor(account)(100)
// 改成
BankAccount.deposit(account)(amount: 100)
實(shí)例方法:
* OC 中的 減號開頭的方法
* Swift 中的 是 func 開頭
類型方法:
* OC 中的 加號開頭的方法
* Swift 中的 是 Class 和 Static 開頭的
* 其中 Class 開頭是 放在 Class類中
* static 開頭是放在結(jié)構(gòu)體滨攻、枚舉够话、 協(xié)議的方法,屬性 以及 Class中的 屬性前光绕。