Swift學習筆記十一:方法
阿新 • • 發佈:2019-03-22
tro truct b2c 16px 表達 mark 怎樣 代碼閱讀 amount
? ? ?方法是與某些特定類型相關聯的功能/函數。在Swift中,結構體和枚舉能夠定義方法;其實這是Swift與C/Objective-C的主要差別之中的一個。
1. 實例方法(Instance Methods)
? 1. 基本使用
? ? ? ? ? 重點:
? ? ? ? ? ? ? ?① 方法其實是特殊的函數,全部函數的規則在方法中均適用
? ? ? ? ? ? ? ?② 基於書寫規範,方法的命名盡量要表達出這種方法的作用。以及每一個參數的作用
? ? ? ? ? ? ? ?③ 能夠看到我們調用方法時,第二個參數的名稱寫出來了,這是由於在Swift中,默認情況下。方法的第一個參數是內部參數(方法名中以及能夠明白表明第一個參數的意義),其它參數都是外部參數。調用時,須要寫出參數名稱(這樣能明白的表示出參數的意義,利於代碼閱讀)。
? ?2.在實例方法中改動值類型?
? ? ? ? ??構體和枚舉是值類型。普通情況下。值類型的屬性不能在他的實例方法中被改動。
? ? ? ? ??假設你確實須要在某個詳細的方法中改動結構體或者枚舉的屬性。你能夠選擇變異(mutating)這種方法
? ? ? ? ? 註意:
? ? ? ? ? ? ? ?① 假設不加mutating?。編譯器會報錯
? ? ? ? ? ? ? ?② 不能在結構體常量實例上調用編譯方法,由於常量的屬性不能被改變
在Objective-C中,類是唯一能定義方法的類型。
1. 實例方法(Instance Methods)
? 1. 基本使用
? ? ? 顧名思義,實例方法就是實例能夠調用的方法。以下讓我們直接上代碼吧
class Counter { var count: Int = 0 func incrementBy(amount: Int, numberOfTimes: Int) { count += amount * numberOfTimes } } let a = Counter() a.incrementBy(1,numberOfTimes:1)
? ? ? ? ? 重點:
? ? ? ? ? ? ? ?① 方法其實是特殊的函數,全部函數的規則在方法中均適用
? ? ? ? ? ? ? ?② 基於書寫規範,方法的命名盡量要表達出這種方法的作用。以及每一個參數的作用
? ? ? ? ? ? ? ?③ 能夠看到我們調用方法時,第二個參數的名稱寫出來了,這是由於在Swift中,默認情況下。方法的第一個參數是內部參數(方法名中以及能夠明白表明第一個參數的意義),其它參數都是外部參數。調用時,須要寫出參數名稱(這樣能明白的表示出參數的意義,利於代碼閱讀)。
假設不想使用外部參數,能夠將外部參數用”_"取代
class Counter { var count: Int = 0 func incrementBy(amount: Int, _ numberOfTimes: Int) { count += amount * numberOfTimes } } let a = Counter() a.incrementBy(1,1)
? ?2.在實例方法中改動值類型?
? ? ? ? ??構體和枚舉是值類型。普通情況下。值類型的屬性不能在他的實例方法中被改動。
? ? ? ? ??假設你確實須要在某個詳細的方法中改動結構體或者枚舉的屬性。你能夠選擇變異(mutating)這種方法
struct Student{
var score = 0
mutating func incrementScore(a:Int){
score += a
}
}
? ? ? ? ? 註意:
? ? ? ? ? ? ? ?① 假設不加mutating?。編譯器會報錯
? ? ? ? ? ? ? ?② 不能在結構體常量實例上調用編譯方法,由於常量的屬性不能被改變
2. 類方法(Type Methods)
? ? ? ? ? 類型方法和實例方法一樣用點語法調用。可是。你是在類型上調用這種方法,而不是在實例上調用。以下是怎樣在SomeClass類上調用類型方法的樣例:
? ? ? ? ? 和定義類屬性一樣,結構體中用statickeyword。類中用classkeyword
struct Student{
var score = 0
static func print(){
println("student")
}
}
class School{
var name = "NB小學"
class func print(){
println("school")
}
}
Student.print() //輸出:student
School.print() //輸出:school
Swift學習筆記十一:方法