麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

Swift3.0 mutating關鍵字

2019-11-14 11:46:31
字體:
來源:轉載
供稿:網友

在Swift中,包含三種類型(type):structureenumerationclass

其中structure和enumeration是值類型(value type), class是引用類型(reference type)

但是與Objective-C不同的是,structure和enumeration也可以擁有方法(method),其中方法可以為實例方法(instance method),也可以為類方法(type method),實例方法是和類型的一個實例綁定的。

在Swift官方教程中有這樣一句話:

“Structures and enumerations are value types. By default, the PRoperties of a value type cannot be modified from within its instance methods.” 

摘錄來自: Apple Inc. “The Swift Programming Language”。 iBooks. https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewBook?id=881256329

大致意思就是說,雖然結構體和枚舉可以定義自己的方法,但是默認情況下,實例方法中是不可以修改值類型的屬性。

舉個簡單的例子,假如定義一個點結構體,該結構體有一個修改點位置的實例方法:(編譯器會報錯)

struct Point {    var x = 0, y = 0    func moveXBy(x: Int, y: Int) {        self.x += x // Cannot invoke '+=' with an argument list of type '(Int, Int)'        self.y += y // Cannot invoke '+=' with an argument list of type '(Int, Int)'    }}

編譯器拋出錯誤,說明確實不能在實例方法中修改屬性值,而且提示你要加mutating關鍵字。

為了能夠在實例方法中修改屬性值,可以在方法定義前添加關鍵字mutating,修改后的代碼:

struct Point {    var x = 0, y = 0    mutating func moveXBy(x: Int, y: Int) {        self.x += x        self.y += y    }}

另外,在值類型的實例方法中,也可以直接修改self屬性值。

enum TriStateSwitch {    case Off, Low, High    mutating func next() {        switch self {        case .Off:            self = .Low        case .Low:            self = .High        case .High:            self = .Off        }    }}var ovenLight = TriStateSwitch.LowovenLight.next() // ovenLight is now equal to .High ovenLight.next() // ovenLight is now equal to .Off”

TriStateSwitch枚舉定義了一個三個狀態的開關,在next實例方法中動態改變self屬性的值。

當然,在引用類型中(即class)中的方法默認情況下就可以修改屬性值,不存在以上問題。


上一篇:xml數據二級聯動

下一篇:sql的數據類型

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 精品国产99久久久久久宅男i | 麻豆视频国产在线观看 | 免费观看黄色一级视频 | 91精品久久香蕉国产线看观看 | 久久国产午夜 | 久久老司机 | 久久亚洲精品久久国产一区二区 | 国产精品999在线观看 | 久久久一区二区三区精品 | 精品国产专区 | 欧美成人一区二区三区 | 久久久久久久一区二区 | 成人福利在线免费观看 | 亚洲一区二区中文 | 一级做a爱视频 | 亚洲午夜精品视频 | 毛片在线视频观看 | 国产二区三区在线播放 | 羞羞网站| 亚洲欧美不卡视频 | 伊人午夜 | 国产精品v片在线观看不卡 成人一区二区三区在线 | 亚洲精品 在线播放 | 国产精品入口夜色视频大尺度 | 杏美月av | 久草免费资源视频 | free台湾极品性hd | 九九热视频免费 | 国产精品成人一区二区三区吃奶 | 精品国产一区二区久久 | 国内精品视频饥渴少妇在线播放 | 石原莉奈日韩一区二区三区 | 丁香天堂网| 国产永久免费观看 | 热99在线视频 | 亚洲国产成人一区二区 | 久久久久久久99 | 国产91一区二区三区 | 国产精品av久久久久久久久久 | 国产精品一区在线观看 | 国产一级毛片国产 |