Swift學習筆記十一:方法

     方法是與某些特定類型相關聯的功能/ 函數 在Swift中,結構體和枚舉可以定義方法;其實這是Swift與C/Objective-C的主要差異之中的一個。

在Objective-C中,類是惟一能定義方法的類型。css


1. 實例方法(Instance Methods)
  1. 基本使用
html

      顧名思義,實例方法就是實例可以調用的方法。如下讓咱們直接上代碼吧函數

class Counter {
    var count: Int = 0
    func incrementBy(amount: Int, numberOfTimes: Int) {
        count += amount * numberOfTimes
    }
}
let a = Counter()
a.incrementBy(1,numberOfTimes:1)

          重點:
               ① 方法實際上是特殊的函數,所有函數的規則在方法中均適用
               ② 基於書寫規範,方法的命名儘可能要表達出這種方法的做用。以及每個參數的做用
               ③ 可以看到咱們調用方法時,第二個參數的名稱寫出來了,這是因爲在Swift中,默認狀況下。方法的第一個參數是內部參數(方法名中以及可以明白代表第一個參數的意義),其它參數都是外部參數。調用時,需要寫出參數名稱(這樣能明白的表示出參數的意義,利於代碼閱讀)。

假設不想使用外部參數,可以將外部參數用」_"取代
post

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
spa

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
相關文章
相關標籤/搜索