我尝试创建一个接受泛型类型作为关联值的枚举
编译器抱怨:
参考泛型类型' GenericItem'需要< ...>中的参数
该计划非常简单:
struct GenericItem <Item:FormattableAsStringWithPrecision> {
let value: Item
}
enum Enumeration {
case Generic(values: [GenericItem])
}
我无法理解如何使这成为可能。
答案 0 :(得分:1)
您还需要将通用类型添加到枚举中,可以从初始化程序推断出类型,因此您不需要将其作为泛型类型参数传递。
以下是您可能会如何做的示例。
struct GenericItem<T: CustomDebugStringConvertible> {
let value: T
}
enum Enumeration<T: CustomDebugStringConvertible> {
case Generic(value: [GenericItem<T>])
}
let someValue = Enumeration.Generic(value: [ GenericItem(value: "") ])
编辑:我将FormattableAsStringWithPrecision
更改为CustomDebugStringConvertible
,因为我认为它是您自己的自定义协议之一,可以轻松换出,但相同的逻辑仍适用于任何协议。