- 枚举、结构体、类都可以定义实例丰富、类型丰富
- 实例方法:通过实例对象调用
- 类型方法:通过类型调用,用static或者class关键字定义
self
class Car {
static var count = 0
init() {
Car.count += 1
}
static func getCount() -> Int {
//下面4种方式都可以
//self.count
//count
//Car.count
Car.self.count
}
}
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
}
}
@discardableResult 翻译:可丢弃结果 为了不警告
func discardableResult() -> Void {
struct Point {
var x = 0.0,y = 0.0
@discardableResult mutating func moveBy(deltaX:Double,deltay:Double) -> Double {
x += deltaX
y += deltay
return x + y
}
}
var p = Point()
//下面不用返回值也不会提醒了
p.moveBy(deltaX: 10, deltay: 10)
}
discardableResult()
网友评论