加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

10.4 Swift结构体中的mutating方法

发布时间:2020-12-14 06:32:08 所属栏目:百科 来源:网络整理
导读:/** 结构体中的 mutating 方法 值类型(结构体或者枚举)默认方法是不可以修改属性的,也不可以修改 self 本身 如果要修改需要做特殊处理,函数前加上 mutating 。 当然在类 ( class )里面当然是可以修改属性的。 */ class MyPerson { var name: String =

/**

结构体中的mutating方法

值类型(结构体或者枚举)默认方法是不可以修改属性的,也不可以修改self本身

如果要修改需要做特殊处理,函数前加上 mutating

当然在类 class)里面当然是可以修改属性的。

*/

class MyPerson {

var name: String = ""

var age: Int = 0

func set(name: String,age: Int) -> Void {

self.name = name

self.age = age

}

func show() -> Void {

print("name=(name),age=(age)")

}

}

var m0 = MyPerson.init()

m0.set(name: "zhangsan",age: 10)

m0.show()

struct MyPerson1 {

var name: String = ""

var age: Int = 0

mutating func set(name: String,age: Int) -> Void {

/**

结构体枚举等值类型的中,这里在普通的实例方法中不允许修改属性

如果一定要修改,在func前面加上 mutating

如果 MyPerson1 class 就没有必要加mutating

*/

self.name = name

self.age = age

}

func show() -> Void {

print("name=(name),age=(age)")

}

}


// 这个不可以修改

// let m11 = MyPerson1.init()

// m11.set(name: 1,age: 1)

var m10 = MyPerson1.init()

m10.set(name: "zhangsan",age: 10)

m10.show()

// 枚举里面

enum LightSwitch {

case OFF,LOW,HIGH

// 在枚举中确实可以有成员方法或者实例方法

// 加上 mutating,才可以修改 self

mutating func next() {

switch self {

case .OFF:

self = .LOW

case .LOW:

self = .HIGH

case .HIGH:

self = .OFF


default:

self = .OFF


}

}

}

var light = LightSwitch.OFF

// 调用之后,此时此刻 light == .LOW

light.next()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读