ios 經典面試案例 (八)

Swift mutating關鍵字的使用?

在Swift中,包含三種類型(type): structure,enumeration,class
其中structureenumeration是值類型(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.”

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

1. 在結構體的實例方法里面修改屬性
struct Persion {
    var name = ""
    mutating func modify(name:String) {
        self.name = name
    }
}
2. 在協(xié)議里面, 如何繼承的結構體或枚舉類型,想要改遍屬性值, 必須添加mutating
protocol Persionprotocol {
    var name : String {get}
    mutating func modify(name:String)
}

struct Persion : Persionprotocol {
    var name = ""
    mutating func modify(name:String) {
        self.name = name
    }
}

3. 在枚舉中直接修改self屬性
enum Switch {
    case On, Off
    
    mutating func operatorTion() {
        switch self {
        case .On:
            self = .Off
        default:
            self = .On
        }
    }
}

var a = Switch.On
a.operatorTion()

print(a)

題的搬運,不成敬意!

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學習記錄文檔,今天18年5月份再次想寫文章,發(fā)現(xiàn)簡書還為我保存起的...
    Jenaral閱讀 3,150評論 2 9
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 4,201評論 1 10
  • 常量與變量使用let來聲明常量,使用var來聲明變量。聲明的同時賦值的話,編譯器會自動推斷類型。值永遠不會被隱式轉...
    莫_名閱讀 536評論 0 1
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,663評論 19 139
  • jQuery ajax 實例講解 [$.get() 定義和用法]get()方法通過遠程HTTP GET請求載入信息...
    風林山閱讀 1,009評論 0 0

友情鏈接更多精彩內容