09-方法

作者: 二斤寂寞 | 来源:发表于2023-04-07 20:10 被阅读0次

方法(Method)

  • 枚举、结构体、类都可以定义实例方法、类型方法
    • 实例方法(Instance Method):通过实例对象调用
    • 类型方法(Type Method):通过类型调用,用static或者class关键字定义

self
□在实例方法中代表实例对象
□在类型方法中代表类型

□在类型方法static func getCount中
□cout等价于self.cout、Car.self.cout、Car.cout

class Car {
    static var cout = 0
    init() {
        Car.cout += 1
    }
    static func getCount() -> Int { cout }
}
let c0 = Car()
let c1 = Car()
let c2 = Car()
print(Car.getCount()) // 3

mutating

  • 结构体和枚举是值类型,默认情况下,值类型的属性不能被自身的实例方法修改
  • 在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
        }                                                            
    }
}

@disscardableResult

  • 在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()

相关文章

  • #09-手势识别(拖动,旋转,捏合)#

    09-手势识别(拖动,旋转,捏合)

  • 09-软件测试方法

    一、测试活动的生命周期 测试计划(测试准入) -> 需求分析与设计 -> 测试实现与执行 -> 测试报告(测试准出...

  • 09-软件测试方法

    一、测试活动的生命周期 测试计划(测试准入) -> 需求分析与设计 -> 测试实现与执行 -> 测试报告(测试准出...

  • 09-方法、下标、继承

    一、方法(Method) mutating @discardableResult 二、下标(subscript) ...

  • 2018-01-19-这是一个图片上传库

    可以用简书创建图片库 HSTS重定向08 HSTS重定向09-缓存

  • 幸福实修

    早上好!#幸福实修#~每天进步1%#幸福实修12班-09-唐洁--富阳# 20171123(58/60) 【幸福...

  • iOS学习笔记10-UIView动画

    上次学习了iOS学习笔记09-核心动画CoreAnimation,这次继续学习动画,上次使用的CoreAnimat...

  • 幸福实修

    早上好!#幸福实修#~每天进步1%#幸福实修12班-09-唐洁--富阳# 20171125(60/60) 【幸福...

  • 幸福实修

    早上好!#幸福实修#~每天进步1%#幸福实修12班-09-唐洁--富阳# 20171122(57/60) 【幸福...

  • 幸福实修

    早上好!#幸福实修#~每天进步1%#幸福实修12班-09-唐洁--富阳# 20171124(59/60) 【幸福...

网友评论

      本文标题:09-方法

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