方法
- 枚举(enum)、结构体(struct)、类(class)都可以定义实例方法、类型方法;
- swift 中方法可分为:
- 实例方法(Instance Method):可以通过实例对象访问;
- 类型方法(Type Method):可以通过类对象访问,用 static 或 class 关键词定义;
class Person {
var age = 10
static var name = "Json"
func changeAge(_ age: Int) {
self.age = age
}
static func show() {
print(self.name)
}
}
let p = Person()
p.changeAge(20)
print(p.age) // 20
Person.show() // Json
- self
- 在对象方法中,表示实例对象;
- 在类型方法中,表示类对象;
- 在类型方法的 name 等价于:self.name、Person.self.name、Person.name;
mutating
- 在 结构体 和 枚举 属于值类型,值类型的属性,不能被自身的实例方法修改;
- 在func 关键字前加 mutating 可以允许这种修改行为;
struct Person {
var age = 10
mutating func changeAge(_ age: Int) {
self.age = age
}
}
@discardableResult
在 func 前加 @discardableResult 关键词,可以消除返回值未引用产生的警告warning;
struct Person {
var age = 10
@discardableResult mutating func changeAge(_ age: Int) -> Int {
self.age = age + 10
return self.age
}
}
var p = Person()
p.changeAge(10)
- 方法是存储在内存的代码区(Text),不占用实例对象的内存;
源代码demo