swift之mutating

swift之mutating,第1张

概述mutating 主要用于定义协议接口增加的关键字段 Swift 的 protocol 不仅可以被 class 类型实现,也适用于 struct 和 enum。因为这个原因,我们在写给别人用的接口时需要多考虑是否使用 mutating 来修饰方法,比如定义为 mutating func myMethod()。Swift 的 mutating 关键字修饰方法是为了能在该方法中修改 struct 或是

mutating 主要用于定义协议接口增加的关键字段

Swift 的 protocol 不仅可以被class类型实现,也适用于structenum。因为这个原因,我们在写给别人用的接口时需要多考虑是否使用mutating来修饰方法,比如定义为mutating func myMethod()。Swift 的关键字修饰方法是为了能在该方法中修改或是的变量,所以如果你没在接口方法里写 mutating 的话,别人如果用或者来实现这个接口的话,就不能在方法里改变自己的变量了

protocol Vehicle{

var numberOfWheels:Int {get}colorUIcolorget setmutating func changecolor()

}

structMyCar:letnumberOfWheels = 4colorUIcolor.bluecolor()redcolor}

如果把 protocol 定义中的mutating去掉的话,MyCar就怎么都过不了编译了:保持现有代码不变的话,会报错说没有实现接口;如果去掉mutating的话,会报错说不能改变结构体成员。这个接口的使用者的忧伤的眼神,相信你能想象得出。

另外,在使用class来实现带有mutating的方法的接口时,具体实现的前面是不需要加mutating修饰的,因为class可以随意更改自己的成员变量。所以说在接口里用mutating修饰方法,对于class的实现是完全透明,可以当作不存在的。

ps:本来来自http://swifter.tips/protocol-mutation/ 总结

以上是内存溢出为你收集整理的swift之mutating全部内容,希望文章能够帮你解决swift之mutating所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1076716.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)