09-方法

  • 方法

  • 枚举、结构体、类都可以定义实例方法、类型方法
  1. 实例方法(Instance Method):通过实例对象调用
  2. 类型方法(Type Method):通过类型调用,用 static 或者 class 关键字定义
class Car {
    static var count = 0
    init() {
        Car.count += 1
    }
    static func getCount() -> Int { count }
}

let c0 = Car()
let c1 = Car()
let c2 = Car()

print(Car.getCount()) // 3
  • self
  1. 在实例方法中代表实例对象
  2. 在类型方法中代表类型
  • 在类型方法 static、func 、getCount中
    count 等价于 self.count、Car.self.coun、Car.count

  • mutating

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

struct Point {
    var x = 0.0, y = 0.0
    mutating func moveBy(deltaX: Double, deltaY: Double) {
        x += deltaX
        y += deltaY
        // self = Point(x: x + deltaX, y: y + deltaY)
    }
}
enum StateSwitch {
    case low, middle, high
    mutating func next() {
        switch self {
        case .low:
            self = .middle
        case .middle:
            self = .high
        case .high:
            self = .low
        }
    }
}
  • @discardableResult

func 前面加个 @discardableResult,可以消除:函数调用后返回值未被使用的警告⚠

struct Point {
    var x = 0.0, y = 0.0
    
    @discardableResult mutating
    func moveX(deltaX: Double) -> Double {
        x += deltaX
        return x
    }
}

var p = Point()
p.moveX(deltaX: 10)

@discardableResult
func get() -> Int {
    return 10
}

get()

本文章只是本人的学习笔记!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值