美文网首页
swift之mutating关键字

swift之mutating关键字

作者: lanmoyingsheng | 来源:发表于2018-09-05 14:06 被阅读4次

    部分参考:swift之mutating关键字

    swift中在structures和enumerations的方法中修改属性值,那么这个方法前必须加mutating。

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

    之前一直在想为什么要加这个关键字,不加觉得也没什么问题吧,直到我看到下面的示例:

    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.Low  
    ovenLight.next()  
    // ovenLight is now equal to .High  
    ovenLight.next()  
    // ovenLight is now equal to .Off”  
    

    这里的枚举,值类型,直接修改self本身。我猜测可能这里用mutating做标记,表明这个方法是不被instance引用,即方法与instance无关联。

    相关文章

      网友评论

          本文标题:swift之mutating关键字

          本文链接:https://www.haomeiwen.com/subject/dpdawftx.html