实例方法(Instance Methods)
实例方法是属于实例的函数,可以访问和修改实例属性。方法的声明与函数类似,但它们在类型内部定义。
class Counter {
var count = 0
// 实例方法
func increment() {
count += 1
}
// 实例方法,带参数
func increment(by amount: Int) {
count += amount
}
// 实例方法,返回值
func reset() -> Int {
let currentCount = count
count = 0
return currentCount
}
}
let counter = Counter()
counter.increment()
print(counter.count) // 输出 1
counter.increment(by: 5)
print(counter.count) // 输出 6
let resetCount = counter.reset()
print(resetCount) // 输出 6
print(counter.count) // 输出 0
类型方法(Type Methods)
类型方法是在类型本身上调用的方法,而不是实例。通过 static 关键字定义类类型方法,对于类方法,也可以使用 class 关键字。
class MathOperations {
// 类型方法
static func add(_ a: Int, _ b: Int) -> Int {
return a + b
}
// 类型方法,用 class 关键字
class func subtract(_ a: Int, _ b: Int) -> Int {
return a - b
}
}
let sum = MathOperations.add(3, 4)
print(sum) // 输出 7
let difference = MathOperations.subtract(10, 5)
print(difference) // 输出 5
在实例方法中修改值类型
默认情况下,值类型的属性不能在它的实例方法中被修改。如果需要在方法内修改值类型的属性,可以在方法前加上 mutating 关键字。
struct Point {
var x = 0.0, y = 0.0
// mutating 实例方法
mutating func moveBy(x deltaX: Double, y deltaY: Double) {
x += deltaX
y += deltaY
}
}
var point = Point(x: 1.0, y: 2.0)
point.moveBy(x: 2.0, y: 3.0)
print(point) // 输出 Point(x: 3.0, y: 5.0)
在实例方法中修改引用类型
引用类型的实例方法默认可以修改实例属性,因为引用类型在传递时传递的是引用,而不是值的拷贝。
class Car {
var speed = 0
// 引用类型的实例方法
func accelerate() {
speed += 10
}
}
let myCar = Car()
myCar.accelerate()
print(myCar.speed) // 输出 10
以上是一些关于 Swift 方法的基本用法。方法是用于执行特定任务的函数,可以在类、结构体和枚举中定义。
转载请注明出处:http://www.zyzy.cn/article/detail/14430/Swift