Swift 语言中结构体和枚举是值类型。一般情况下,值类型的属性不能在它的实例方法中被修改。

但是,如果你确实需要在某个具体的方法中修改结构体或者枚举的属性,你可以选择变异(mutating)这个方法,然后方法就可以从方法内部改变它的属性;并且它做的任何改变在方法结束时还会保留在原始结构中。

方法还可以给它隐含的self属性赋值一个全新的实例,这个新实例在方法结束后将替换原来的实例。



 1 import UIKit
 2 
 3 struct size {
 4     var width = 0
 5     var height = 0
 6     
 7     func size() -> Int {
 8         return width * height
 9     }
10     
11     mutating func changeSize(count: Int) {
12         width *= count
13         height *= count
14     }
15 }

 

假如我们去掉mutating,将会报错

 

 

posted on 2023-03-18 21:43  代码少年_夕阳  阅读(159)  评论(0编辑  收藏  举报