方法分为:实例方法、类方法。
类似于OC中的
-
方法,+
方法
- 实例方法
(Instance Method)
通过实例对象调用 - 类方法
(Type Method)
通过类型调用,用static
或class
关键字定义
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
关键字
self
在实例方法中,代表实例对象
在类方法中,代表类型
枚举、结构体、类,都可以定义实例方法、类方法。
关键字mutating
默认情况下,值类型的属性不能被自身的实例方法修改。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)
}
}
@discardableResult
在func
前面加个@discardableResult
,可以消除:函数调用后返回值未被使用的警告。
@discardableResult
func get() -> Int {
return 10
}
get()