码迷,mamicode.com
首页 > 编程语言 > 详细

学习Swift--方法

时间:2016-05-18 00:27:27      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:

方法

方法是与某些特定类型相关联的函数。类、结构体、枚举都可以定义实例方法;实例方法为给定类型的实例封装了具体的任务与功能。类、结构体、枚举也可以定义类型方法;类型方法与类型本身相关联。类型方法与 Objective-C 中的类方法(class methods)相似。

 

实例方法

class Counter {
    var count = 0
    
    // 实现两个简单的方法
    func increment() {
        count += 1
    }
    
    func incrementBy(amount: Int) {
        count += amount
    }
}

let counter = Counter()
counter.increment()
print(counter.count)
// 打印出:1
counter.incrementBy(5)
print(counter.count)
// 打印出:5

 

self属性

平时不需要多使用self属性,但是在某些方法的参数名与某个属性名相同,就需要用到self属性,主要作用就是用来区分属性名

struct Point {
    var x = 0.0, y = 0.0
    func isToTheRightOfX(x: Double) -> Bool {
        // 当传进的参数(x)和已经声明的属性相吻合的时候 需要用到self属性进行区分
        return self.x > x
    }
}

let point = Point(x: 5.0, y: 3.0)
if point.isToTheRightOfX(1.0) {
    print("The point is to the right of the line where x == 1.0")
}

 

实例方法修改值类型

结构体和枚举都是值类型,那么使用实例方法对值类型的属性进行修改需要特殊处理,否则无法修改

struct Point {
    var x = 0.0, y = 0.0
    
    // 如果要修改值类型属性 需要加 "mutating"关键字
    mutating func moveByX(deltaX: Double, deltaY:Double){
        self.x += deltaX
        self.y += deltaY
        
//        self = Point(x: x + deltaX, y: y + deltaY)  这样写等效
    }
}

var point = Point(x: 5.0, y: 3.0)
point.moveByX(8.0, deltaY: 2.0)
print(point)

 

enum StateSwitch {
    case Off, Low, High
    mutating func next() {
        switch self {
        case .Off:
            self = .Low
        case .Low:
            self = .High
        case .High:
            self = .Off
        }
    }
}

var ovenLight = StateSwitch.Off
ovenLight.next()
// 现在是Low状态
ovenLight.next()
// 现在是High状态

 

类型方法

实例方法是被类型的某个实例调用的方法。你也可以定义类型本身调用的方法,这种方法就叫做类型方法声明结构体和枚举的类型方法,在方法的func关键字之前加上关键字static。类可能会用关键字class来允许子类重写父类的实现方法。

class SomeClass {
    class func someFunc() -> SomeClass {
        return SomeClass()
    }
}

// 类型方法可以直接使用类型调用,无需创建实例
let someClass = SomeClass.someFunc()

struct SomeStruct {
    static func someFunc() {
        
    }
}
SomeStruct.someFunc()

 

学习Swift--方法

标签:

原文地址:http://www.cnblogs.com/Alex-sk/p/5503359.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!