美文网首页
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