• Swift学习笔记(14)--方法


    1.分类

    方法分为实例方法和类型方法

    实例方法(Instance Methods):与java中的类似,略

    类型方法(Type Methods):与java、oc中的类方法类似.声明类的类型方法,在方法的func关键字之前加上关键字class;声明结构体和枚举的类型方法,在方法的func关键字之前加上关键字static

    方法的参数名参见学习笔记的函数章节

    2.在实例方法中修改值类型和self

    结构体和枚举是值类型。一般情况下,值类型的属性不能在它的实例方法中被修改。

    但是,如果你确实需要在某个具体的方法中修改结构体或者枚举的属性,你可以选择变异(mutating)这个方法,然后方法就可以从方法内部改变它的属性;并且它做的任何改变在方法结束时还会保留在原始结构中。方法还可以给它隐含的self属性赋值一个全新的实例,这个新实例在方法结束后将替换原来的实例。要使用变异方法, 将关键字mutating 放到方法的func关键字之前就可以了:

    //1.普通修改
    struct Point {
        var x = 0.0, y = 0.0
        mutating func moveByX(deltaX: Double, y deltaY: Double) {
            x += deltaX
            y += deltaY
        }
    }
    var somePoint = Point(x: 1.0, y: 1.0)
    somePoint.moveByX(2.0, y: 3.0)
    println("点坐标 ((somePoint.x), (somePoint.y))") //点坐标 (3.0, 4.0)
    
    //2.self重新赋值,效果与1一样
    struct Point2 {
        var x = 0.0, y = 0.0
        mutating func moveByX(deltaX: Double, y deltaY: Double) {
            self = Point2(x: x+deltaX, y: y+deltaY)
        }
    }
    var somePoint2 = Point2(x: 1.0, y: 1.0)
    somePoint2.moveByX(2.0, y: 3.0)
    println("点坐标 ((somePoint2.x), (somePoint2.y))") //点坐标 (3.0, 4.0)
    
    //3.枚举的变异方法可以把self设置为相同的枚举类型中不同的成员:
    enum TriStateSwitch {
        case Off, Low, High
        mutating func next() {
            switch self {
            case Off:
                self = Low
            case Low:
                self = High
            case High:
                self = Off
            }
        }
    }
    var ovenLight = TriStateSwitch.Low
    ovenLight.next()    // ovenLight 现在等于 .High
    ovenLight.next()    // ovenLight 现在等于 .Off
    

      

  • 相关阅读:
    js基础 数组reduce
    js基础 数组every some
    js基础 数组forEach
    js基础 数组排序
    js基础 数组findIndex
    nodejs+koa2微信app支付,小程序支付
    Iview-datePicker获取选中的日期,如果没有选,提示错误,选了,错误隐藏
    mongoose+koa2 按照_id更新多条数据,删除数组中的字段,然后添加新的字段,$pull和$or结合使用
    json数组去除重复的值
    mongoose根据_id更新,且如果数组中没有元素就添加
  • 原文地址:https://www.cnblogs.com/anywherego/p/3793331.html
Copyright © 2020-2023  润新知