gpt4 book ai didi

ios - 如何为枚举实现的协议(protocol)提供默认实现?

转载 作者:行者123 更新时间:2023-12-02 18:30:38 24 4
gpt4 key购买 nike

我有一个实现协议(protocol)的枚举:

protocol MyProtocol {
func myFunction()
}

enum MyEnum: MyProtocol {
case caseOne
case caseTwo
case caseThree
}

该协议(protocol)只有一种方法,默认情况下可以为所有枚举的情况实现:

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 的每个案例都没有自己的类型,并且可以不要像这样静态地受到歧视。还有一个问题是,您不能为一种类型 (MyEnum) 提供多个满足协议(protocol)要求的实现,因此从这方面来看这也是不可能的;您需要编写一个内部带有 switch 的实现。

关于ios - 如何为枚举实现的协议(protocol)提供默认实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69468583/

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