美文网首页
Swift5.1学习随笔之mutating

Swift5.1学习随笔之mutating

作者: SAW_ | 来源:发表于2020-04-24 15:25 被阅读0次

结构体和枚举是值类型,默认情况下,值类型的属性不能被自身的实例方法修改
在func关键字前面加mutating可以允许这种修改行为

struct Point {
    var x = 0.0, y = 0.0
    func moveBy(deltaX: Double, deltaY: Double) {
        x += deltaX // Left side of mutating operator isn't mutable: 'self' is immutable
        y += deltaY // Left side of mutating operator isn't mutable: 'self' is immutable
    }
}
struct Point {
    var x = 0.0, y = 0.0
    mutating func moveBy(deltaX: Double, deltaY: Double) {
        x += deltaX 
        y += deltaY 
    }
}
enum StateSwitch {
    case low, middle, high
    func next() {
        switch self {
        case .low:
            self = .middle // Cannot assign to value: 'self' is immutable
        case .middle:
            self = .high // Cannot assign to value: 'self' is immutable
        case .high:
            self = .low // Cannot assign to value: 'self' is immutable
        }
     }
}
enum StateSwitch {
    case low, middle, high
    mutating func next() {
        switch self {
        case .low:
            self = .middle 
        case .middle:
            self = .high
        case .high:
            self = .low
        }
     }
}

相关文章

  • Swift5.1学习随笔之mutating

    结构体和枚举是值类型,默认情况下,值类型的属性不能被自身的实例方法修改在func关键字前面加mutating可以允...

  • Swift5.1学习随笔之指针

    Swift中也有专门的指针类型,这些都被定义为Unsafe(不安全的),常见的有以下4种类型 UnsafePoin...

  • Swift5.1学习随笔之fatalError

    如果遇到严重问题,希望结束程序运行,可以直接使用fatalError函数抛出错误(这是无法通过do-catch捕捉...

  • Swift5.1学习随笔之常量

    Swift中的常量用let修饰 1、只能赋值一次 2、它的值不要求在编译时期确定,但是使用之前必须赋值一次 3、常...

  • Swift5.1学习随笔之@discardableResult

    在func前面加@discardableResult,可以消除:函数调用后返回值未被使用的警告⚠️ 或者可以用下划...

  • Swift5.1学习随笔之属性

    swift中跟实例相关的属性可以分为2大类 1、存储属性(Stored Property)2、计算属性(Compu...

  • Swift5.1学习随笔之协议Protocol

    协议Protocol 协议可以用来定义方法、属性、下标声明,协议可以被枚举、结构体、类遵守(多个协议用逗号隔开) ...

  • Swift5.1学习随笔之扩展(Extension)

    Swift中的扩展,类似于OC中的分类Category 扩展可以为枚举、类、结构体、协议添加新功能可以添加方法、计...

  • Swift5.1学习随笔之函数func

    Swift中的函数用func关键字定义 举个? 无返回值的函数 有3中表达写法 隐式返回 如果整个函数体是一个单一...

  • Swift5.1学习随笔之字面量

    直接写出来的true就是字面量,表示Bool类型的字面量为true、flase 字符串String的字面量为“ja...

网友评论

      本文标题:Swift5.1学习随笔之mutating

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