如何具有绑定到协议的特定枚举用例

问题描述

这是我想要的一个简单示例:

protocol P: Equatable {}

enum A: P {}
enum B: P {}

enum Foo {
  case 1
  case 2
  case test(P)
}

在Foo枚举中,我想要test枚举中的第三种情况Foo。 换句话说,我想要一个符合协议P的类型。 不能直接使用协议P。 例如,案例test可以是A或B类型的枚举。

实际上,我可以:

enum Foo<T: P> {
  case 1
  case 2
  case test(T)
}

但是,它将仅用于第三种情况。 因此,如果我不需要输入类型,将很烦人。

您有解决此问题的建议吗?

-编辑-

确实,最新版本正在运行。 我刚刚补充说,协议P符合协议Equatable。 现在,我收到了相同的问题,但出现以下错误: “协议'P'只能用作通用约束,因为它具有Self或关联的类型要求”。

我想我理解为什么会出现问题,导致Swift假设我可以比较两个不同类型的对象。 但是,在我的实现中将是不可能的。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...