Swift - 如何强制 class 中的每个方法调用特定函数?
Swift - How can I force every method in a class to call specific function?
换句话说,我想找到一种方法来避免在每个 class 方法中重复输入代码,如下例所示。
代码:
class SampleClass {
func common() {
print("It's done")
}
func first() {
print("First fucntion is excuted")
self.common()
}
func second() {
print("First fucntion is excuted")
self.common()
}
func third() {
print("First fucntion is excuted")
self.common()
}
}
结果:
SampleClass().first()
// First fucntion is excuted
// It's done
SampleClass().second()
// Second fucntion is excuted
// It's done
SampleClass().third()
// Third fucntion is excuted
// It's done
如您所见,方法 common()
在每个 class 方法中执行。
我想在这里做的不是在每个方法中都写 common()
方法,让所有方法 运行 自动。
在 Swift 中是否有任何函数或模式可以做到这一点?如果是这样,请告诉我。
谢谢!
一种可能的方法是调用 common
并传递闭包
class SampleClass {
func common(action: @escaping () -> Void) {
action()
print("It's done")
}
func first() { print("First function is executed") }
func second() { print("Second function is executed") }
func third() { print("Third function is executed") }
}
let sample = SampleClass()
sample.common(action: sample.first)
// First function is executed
// It's done
sample.common(action: sample.second)
// Second function is executed
// It's done
sample.common(action: sample.third)
// Third function is executed
// It's done
换句话说,我想找到一种方法来避免在每个 class 方法中重复输入代码,如下例所示。
代码:
class SampleClass {
func common() {
print("It's done")
}
func first() {
print("First fucntion is excuted")
self.common()
}
func second() {
print("First fucntion is excuted")
self.common()
}
func third() {
print("First fucntion is excuted")
self.common()
}
}
结果:
SampleClass().first()
// First fucntion is excuted
// It's done
SampleClass().second()
// Second fucntion is excuted
// It's done
SampleClass().third()
// Third fucntion is excuted
// It's done
如您所见,方法 common()
在每个 class 方法中执行。
我想在这里做的不是在每个方法中都写 common()
方法,让所有方法 运行 自动。
在 Swift 中是否有任何函数或模式可以做到这一点?如果是这样,请告诉我。
谢谢!
一种可能的方法是调用 common
并传递闭包
class SampleClass {
func common(action: @escaping () -> Void) {
action()
print("It's done")
}
func first() { print("First function is executed") }
func second() { print("Second function is executed") }
func third() { print("Third function is executed") }
}
let sample = SampleClass()
sample.common(action: sample.first)
// First function is executed
// It's done
sample.common(action: sample.second)
// Second function is executed
// It's done
sample.common(action: sample.third)
// Third function is executed
// It's done