Ser*_*gio 2 enums protocols ios swift
我有一个实现协议的枚举:
protocol MyProtocol {
func myFunction()
}
enum MyEnum: MyProtocol {
case caseOne
case caseTwo
case caseThree
}
Run Code Online (Sandbox Code Playgroud)
该协议只有一种方法可以默认实现所有枚举的情况:
extension MyProtocol where Self == MyEnum {
func myFunction() {
// Default implementation.
}
}
Run Code Online (Sandbox Code Playgroud)
但我想为枚举的每种情况创建一个默认实现,如下所示(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.
}
}
Run Code Online (Sandbox Code Playgroud)
是否可以?
enum
case 并不以您可能正在寻找的方式存在于类型系统中:每个 case 都enum
没有自己的类型,并且不能像这样静态地进行区分。还有一个问题是,您不能为一种类型 ( MyEnum
) 提供多个满足协议要求的实现,因此从这方面来看这也是不可能的;您需要编写一个带有switch
内部的实现。
归档时间: |
|
查看次数: |
76 次 |
最近记录: |