gpt4 book ai didi

swift - 协议(protocol)之间的实现冲突

转载 作者:IT王子 更新时间:2023-10-29 05:44:13 27 4
gpt4 key购买 nike

我偶然发现了一个问题,但我不知道该如何解决。

假设我们有一个基类(可能来自 FrameworkA),其属性名为 subject:

public class MyClass {
public var subject: String
}

我们有一个协议(protocol)(可能来自 FrameworkB),具有另一个属性但名称相同:

public protocol MyProtocol {
var subject: String { get }
}

这两个属性代表完全不同的东西。

如何创建一个继承自 MyClass 并实现 MyProtocol 的类?我该如何使用这些属性?

public class SecondClass: MyClass, MyProtocol {
var MyProcotol.name: String { // <==== Obviously not allowed
return "something"
}
var MyClass.name: String { // <==== Obviously not allowed
return "something else"
}
}

我认为 C# 允许某种类型的声明,但我不是 100% 确定...

最佳答案

如果您可以控制这个基类和/或协议(protocol),您可以为属性指定唯一的名称,这样就可以解决问题。

如果您做不到,问题就变成了 SecondClass 是否真的必须自己履行这两个相互冲突的职责。具体来说,MyProtocol 是什么?一些委托(delegate)协议(protocol)?您可以改为让 SecondClass 提供一个符合该协议(protocol)的单独对象,从而消除相互冲突的双重角色。

最重要的是,与其让一个对象尝试服务于两个相互冲突的目的,不如将责任分解为单独的对象来解决任何此类冲突。

关于swift - 协议(protocol)之间的实现冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29967163/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com