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

Swift 5.10中协议方法参数名不同仍可编译是否为预期行为?

这是Swift的预期行为吗?

这是完全符合预期的行为。在Swift的协议方法定义中,仅要求实现的方法与协议方法的外部参数标签一致,而内部参数名属于实现细节,协议不会强制要求和定义保持相同。

看你的代码示例:

protocol MyProtocol {
    func foo(with parameter: Bool) -> Bool
}

class Conforms: MyProtocol {
    func foo(with anotherParameter: Bool) -> Bool {
        true
    }
}

协议里的foo(with:)方法,with是外部参数标签;实现类中的方法同样保留了with这个外部标签,只是把内部使用的参数名从parameter改成了anotherParameter——这完全满足协议的一致性要求。

只有当实现方法的外部参数标签和协议定义不一致时(比如改成foo(_:)或者foo(using:)),才会触发协议不符合的编译错误。

内容的提问来源于stack exchange,提问作者Filippo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 17:13:10