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