You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否修饰调试中断函数,使其在调用该函数的位置触发中断?

如何在Swift中模拟抽象类行为?

咱都知道Swift本身没有原生的抽象类支持,但如果需要实现那种强制子类重写特定方法的约束,完全可以通过一个简单的辅助函数来模拟抽象类的效果!

先来看核心的mustOverride辅助函数:

func mustOverride(callSite: String = #function) -> Never {
    preconditionFailure("\(callSite) must be overridden in a subclass")
}

这个函数利用#function自动获取当前调用的方法名,再通过preconditionFailure抛出运行时错误,明确提示该方法必须在子类中重写。

接下来看具体的使用示例:

1. 定义“抽象”基类

创建一个基类,把需要子类实现的方法用mustOverride()占位,以此模拟抽象方法:

// 模拟“抽象”类
class SoundBase {
    func play() { mustOverride() }
}

2. 实现具体子类

子类必须重写基类中的play方法,否则调用时会直接触发错误:

// “具体”类
class CatSound : SoundBase {
    override func play() {
        // 这里可以实现播放猫叫声的逻辑
        print("喵~")
    }
}

如果有人直接实例化SoundBase并调用play方法,程序会立刻崩溃并抛出提示:play() must be overridden in a subclass,完美达到了抽象类的约束效果!

内容的提问来源于stack exchange,提问作者Mark A. Donohoe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:51:12