最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

二、實例方法基礎(chǔ)

實例方法的語法和函數(shù)完全一致,其和具體類型的實例所關(guān)聯(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,默認(rèn)情況下,開發(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é)中有相關(guān)介紹,這里需要注意的是,對于值類型,即結(jié)構(gòu)體和枚舉,其并不能直接在實例方法中修改實例屬性的值,Swift中提供了另一種方式,如果真有如此的需求,開發(fā)者可以使用mutating關(guān)鍵字將實例方法聲明成可變的,實際上,如果在可變的實例方法中修改了值類型屬性的值,是會創(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指當(dāng)前類型,同樣開發(fā)者可以使用self來區(qū)別類型屬性和類型方法中的參數(shù)。使用Static關(guān)鍵字來進行類型方法的創(chuàng)建:

如果是在類中創(chuàng)建類型方法,若此方法可以被子類進行重寫,則應(yīng)該使用class關(guān)鍵字來創(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()

相關(guān)文章

  • swift內(nèi)存管理指針類型使用實例詳解

    swift內(nèi)存管理指針類型使用實例詳解

    這篇文章主要為大家介紹了swift內(nèi)存管理指針類型使用實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • Swift中排序算法的簡單取舍詳解

    Swift中排序算法的簡單取舍詳解

    對于排序算法, 通常簡單的, 為大家所熟知的有, 選擇排序, 冒泡排序, 快速排序, 當(dāng)然還有哈希, 桶排序之類的, 本文僅比較最為常見的選擇, 冒泡和快排,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2018-03-03
  • 關(guān)于swift的個人小結(jié)

    關(guān)于swift的個人小結(jié)

    本文是個人對于目前學(xué)習(xí)swift的一些心得的匯總,這里分享給大家,希望大家能夠喜歡
    2016-12-12
  • 用SwiftUI實現(xiàn)3D Scroll滾動效果的實現(xiàn)代碼

    用SwiftUI實現(xiàn)3D Scroll滾動效果的實現(xiàn)代碼

    這篇文章主要介紹了用SwiftUI實現(xiàn)3D Scroll效果的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)
    2020-04-04
  • SwiftUI使用Paths和AnimatableData實現(xiàn)酷炫的顏色切換動畫

    SwiftUI使用Paths和AnimatableData實現(xiàn)酷炫的顏色切換動畫

    這篇文章主要介紹了SwiftUI使用Paths和AnimatableData實現(xiàn)酷炫的顏色切換動畫,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-05-05
  • Swift Extension擴展得使用詳細(xì)介紹

    Swift Extension擴展得使用詳細(xì)介紹

    在swift中,extension與Objective-C的category有點類似,但是extension比起category來說更加強大和靈活,它不僅可以擴展某種類型或結(jié)構(gòu)體的方法,同時它還可以與protocol等結(jié)合使用,編寫出更加靈活和強大的代碼
    2022-09-09
  • Swift自定義UITableViewCell背景色

    Swift自定義UITableViewCell背景色

    這篇文章主要為大家詳細(xì)介紹了Swift自定義UITableViewCell背景色,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 淺談在Swift中關(guān)于函數(shù)指針的實現(xiàn)

    淺談在Swift中關(guān)于函數(shù)指針的實現(xiàn)

    這篇文章主要介紹了淺談在Swift中關(guān)于函數(shù)指針的實現(xiàn),是作者根據(jù)C語言的指針特性在Swifft中做出的一個實驗,需要的朋友可以參考下
    2015-07-07
  • Swift中的命名空間詳解

    Swift中的命名空間詳解

    這篇文章主要給大家介紹了關(guān)于Swift中命名空間的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • 詳談swift內(nèi)存管理中的引用計數(shù)

    詳談swift內(nèi)存管理中的引用計數(shù)

    下面小編就為大家?guī)硪黄斦剆wift內(nèi)存管理中的引用計數(shù)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09

最新評論

武宁县| 松潘县| 巴南区| 砀山县| 盐亭县| 崇义县| 济阳县| 新建县| 聊城市| 来安县| 沁水县| 宁波市| 会同县| 商城县| 靖江市| 奉贤区| 左云县| 陆良县| 浮梁县| 靖远县| 旬邑县| 安龙县| 浑源县| 乐昌市| 盘山县| 尖扎县| 闵行区| 山阳县| 铅山县| 贵南县| 右玉县| 清流县| 通渭县| 南康市| 潮州市| 九寨沟县| 罗定市| 原平市| 梅州市| 西安市| 凉山|