Swift struct Mutable 的方法

@(Swifter - 100 个 Swift 必备 Tips (第二版) 读书笔记)[swift][ios]

1、mutating 使用

struct 一般用于定义一些纯数据类型,如果在方法里需要更改struct中的变量值那么必须加上 mutating 关键字,默认struct 出来的变量是Immutable.

struct Student{
    var age : Int
    var weight : Int
    var height : Int
    
    mutating func gainWeight(newWeight: Int){
        weight += newWeight;
    }
}

2、protocol的方法声明为mutating

swift中struct、enum、�class都可以继承protocol 只有实现了mutating字段的方法才能在struct、enum更改自身变量,class中可以不写mutating字段.

protocol Vehicle
{
    var numberOfWheels: Int {get}
    var color: UIColor {get set}

    mutating func changeColor()
}

struct MyCar: Vehicle {
    let numberOfWheels = 4
    var color = UIColor.blueColor()

    mutating func changeColor() {
        color = UIColor.redColor()
    }
}

class Bmw: Vehicle{

//protocol里面所有的属性子类都必须复写;
    let numberOfWheels = 4
    var color = UIColor.redColor()

//可以不需要写mutating
    func changeColor() {
        color = UIColor.blackColor();
    }
}

本文参考:@onevcat 的 Swifter - 100 个 Swift 必备 Tips (第二版)

你可能感兴趣的:(Swift struct Mutable 的方法)