欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Swift面向?qū)ο缶幊讨械姆椒?method)

 更新時間:2016年07月01日 18:46:39   作者:琿少  
既然面向?qū)ο竽蔷鸵欢〞衜ethod,方法和面向過程語言中的function函數(shù)并沒什么區(qū)別,只不過方法在面向?qū)ο笳Z言中可以被類來約束作用域,這里我們就來詳解Swift面向?qū)ο缶幊讨械姆椒?method)
struct Point {
  var x:Double
  var y:Double
  mutating func move(x:Double,y:Double) {
    self = Point(x: self.x+x,y: self.y+y)
  }
  static func name(){
    print("Point")
  }
}
Point.name()

一、引言

方法只是一個術語,其實就是將函數(shù)與特定的類型結(jié)合,類、結(jié)構(gòu)體、枚舉都可以定義方法,方法又分為實例方法和類型方法,類型方法類似于Objective-C中的類方法。Swift和Objective-C的一大不同是,Objective-C只有在類中可以定義方法。

二、實例方法基礎

實例方法的語法和函數(shù)完全一致,其和具體類型的實例所關聯(lián),實例方法在調(diào)用時由類型的實例點語法進行調(diào)用來完成一些功能模塊。示例如下:

class Math {
  //完成加法功能的實例方法
  func add(param1:Double,param2:Double)->Double{
    return param1+param2
  }
}
//創(chuàng)建類型實例
var obj = Math()
//調(diào)用方法進行計算
obj.add(5, param2: 5)

與Objective-C類似,Swift中每一個類的實例中都隱藏含有一個self屬性,self屬性就是實例本身,開發(fā)者可以在實例方法中使用self來調(diào)用屬性或者其他實例方法,示例如下:

class Math {
  //完成加法功能的實例方法
  func add(param1:Double,param2:Double)->Double{
    return param1+param2
  }
  func mul(param1:Double,param2:Double) -> Double {
    //使用self調(diào)用實例方法
    self.add(param1, param2: param2)
    return param1*param2
  }
}

然而,Swift并不要求開發(fā)者必須寫self,默認情況下,開發(fā)者可以直接省略self來調(diào)用屬性和方法:

class Math {
  //完成加法功能的實例方法
  func add(param1:Double,param2:Double)->Double{
    return param1+param2
  }
  func mul(param1:Double,param2:Double) -> Double {
    //使用self調(diào)用實例方法
    add(param1, param2: param2)
    return param1*param2
  }
}

有一種情況需要注意,對于屬性的調(diào)用,如果方法中的參數(shù)名和類實例的屬性名相同,則必須使用self來調(diào)用類的實例屬性,防止歧義的產(chǎn)生:

class Math {
  var param1 = 10.0
  //完成加法功能的實例方法
  func add(param1:Double,param2:Double)->Double{
    //這里將使用param1=10,如果不加self 將使用參數(shù)中的param1
    return self.param1+param2
  }
  func mul(param1:Double,param2:Double) -> Double {
    //使用self調(diào)用實例方法
    add(param1, param2: param2)
    return param1*param2
  }
}

三、在實例方法中修改值類型的值

首先需要清楚一個概念,Swift中有兩種類型,值類型和引用類型,具體在類、結(jié)構(gòu)體、枚舉一節(jié)中有相關介紹,這里需要注意的是,對于值類型,即結(jié)構(gòu)體和枚舉,其并不能直接在實例方法中修改實例屬性的值,Swift中提供了另一種方式,如果真有如此的需求,開發(fā)者可以使用mutating關鍵字將實例方法聲明成可變的,實際上,如果在可變的實例方法中修改了值類型屬性的值,是會創(chuàng)建一個新的實例來代替原來的實例的,示例如下:

struct Point {
  var x:Double
  var y:Double
  mutating func move(x:Double,y:Double) {
    self.x+=x
    self.y+=y
  }
}
var point = Point(x: 1, y: 1)
print(point)
point.move(3, y: 3)
print(point)

在值類型實例的可變方法中修改屬性的值,實際上就是創(chuàng)建了一個新的實例,上面的寫法和下面的寫法原理是一樣的:

struct Point {
  var x:Double
  var y:Double
  mutating func move(x:Double,y:Double) {
    self = Point(x: self.x+x,y: self.y+y)
  }
}

四、類型方法

正如實例方法是通過類型的實例來進行調(diào)用的,類型方法是通過類型直接來調(diào)用的,相比于實例方法,類型方法中的self指當前類型,同樣開發(fā)者可以使用self來區(qū)別類型屬性和類型方法中的參數(shù)。使用Static關鍵字來進行類型方法的創(chuàng)建:

如果是在類中創(chuàng)建類型方法,若此方法可以被子類進行重寫,則應該使用class關鍵字來創(chuàng)建,示例如下:

class Math {
  var param1 = 10.0
  //完成加法功能的實例方法
  func add(param1:Double,param2:Double)->Double{
    //這里將使用param1=10,如果不加self 將使用參數(shù)中的param1
    return self.param1+param2
  }
  func mul(param1:Double,param2:Double) -> Double {
    //使用self調(diào)用實例方法
    add(param1, param2: param2)
    return param1*param2
  }
  class func name(){
    print("Math")
  }
}
Math.name()

相關文章

  • Swift Access Control訪問控制與斷言詳細介紹

    Swift Access Control訪問控制與斷言詳細介紹

    這篇文章主要介紹了Swift Access Control訪問控制與斷言,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-09-09
  • Swift中非可選的可選值類型處理方法詳解

    Swift中非可選的可選值類型處理方法詳解

    Optional是Objective-C沒有的數(shù)據(jù)類型,是蘋果引入到Swift語言中的全新類型,它的特點就和它的名字一樣:可以有值,也可以沒有值,當它沒有值時,就是nil。下面這篇文章主要給大家介紹了關于Swift中非可選的可選值類型處理方法的相關資料,需要的朋友可以參考下。
    2017-11-11
  • 詳解Swift面向?qū)ο缶幊讨械姆椒?method)

    詳解Swift面向?qū)ο缶幊讨械姆椒?method)

    既然面向?qū)ο竽蔷鸵欢〞衜ethod,方法和面向過程語言中的function函數(shù)并沒什么區(qū)別,只不過方法在面向?qū)ο笳Z言中可以被類來約束作用域,這里我們就來詳解Swift面向?qū)ο缶幊讨械姆椒?method)
    2016-07-07
  • Swift中初始化init的方法小結(jié)

    Swift中初始化init的方法小結(jié)

    Swift有著超級嚴格的初始化方法,不僅強化了designated初始化方法的地位,所有不加修飾的init方法都需要在方法中確保非Optional的實例變量被賦值初始化,下面這篇文章主要給大家介紹了關于Swift中初始化init的相關資料,需要的朋友可以參考下。
    2018-04-04
  • swift 錯誤處理do catch try try!使用詳解

    swift 錯誤處理do catch try try!使用詳解

    這篇文章主要介紹了swift 錯誤處理do catch try try!使用詳解的相關資料,需要的朋友可以參考下
    2023-03-03
  • Swift數(shù)組詳細用法解析

    Swift數(shù)組詳細用法解析

    這篇文章主要為大家詳細介紹了Swift數(shù)組詳細用法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Swift代碼自定義UIView實現(xiàn)示例

    Swift代碼自定義UIView實現(xiàn)示例

    這篇文章主要為大家介紹了Swift如何自定義UIView的實現(xiàn)示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進步,早日升職加薪
    2021-10-10
  • Swift使用enum抹平數(shù)組元素差異實例詳解

    Swift使用enum抹平數(shù)組元素差異實例詳解

    這篇文章主要為大家介紹了Swift使用enum抹平數(shù)組元素差異實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • Swift實現(xiàn)監(jiān)聽鍵盤通知及一些處理詳解

    Swift實現(xiàn)監(jiān)聽鍵盤通知及一些處理詳解

    這篇文章主要給大家介紹了關于Swift實現(xiàn)監(jiān)聽鍵盤通知及一些處理的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-01-01
  • switch實現(xiàn)一個兩數(shù)的運算代碼示例

    switch實現(xiàn)一個兩數(shù)的運算代碼示例

    這篇文章主要介紹了switch實現(xiàn)一個兩數(shù)的運算代碼示例,需要的朋友可以參考下
    2017-06-06

最新評論