zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    编程总结3
    编程总结2
    编程总结1
    对我影响最深的老师
    自我介绍
    BFC 规则及解决的问题?
    简述 CSS 精灵图原理,及优缺点?
    等高布局、圣杯布局、双飞翼布局的实现原理
    CSS 基本选择器有哪些?
    CSS 引入方式有哪些?
  • 原文地址:https://www.cnblogs.com/anywherego/p/3793331.html
Copyright © 2011-2022 走看看