如何给一个默认实现的协议由枚举实现?



我有一个实现协议的enum:

protocol MyProtocol {
func myFunction()
}
enum MyEnum: MyProtocol {
case caseOne
case caseTwo
case caseThree
}

该协议只有一个方法可以默认实现所有enum的情况:

extension MyProtocol where Self == MyEnum {
func myFunction() {
// Default implementation.
}
}

但是我想为枚举的每种情况创建一个默认实现,类似于(PSEUDOCODE)):

extension MyProtocol where Self == MyEnum & Case == caseOne {
func myFunction() {
// Implementation for caseOne.
}
}
extension MyProtocol where Self == MyEnum & Case == caseTwo {
func myFunction() {
// Implementation for caseTwo.
}
}
extension MyProtocol where Self == MyEnum & Case == caseThree {
func myFunction() {
// Implementation for caseThree.
}
}

有可能吗?

enum在类型系统中不以您可能寻找的方式出现:enum的每个case都没有自己的类型,并且不能像这样静态地进行区分。还有一个问题是,你不能给一种类型(MyEnum)超过一个实现,满足协议要求,所以这是不可能的,从这方面;你需要写一个单独的实现,里面有一个switch

相关内容

  • 没有找到相关文章

最新更新