我正在创建一个自定义集合,包装字典。这个集合应该识别它什么时候得到一个枚举,它的原始值为: string/int,如果是这样的话,它将自动从它中提取"rawValue“。
我的一个下标应该处理这个情况--下标的键是String类型,值是Enum大小写--例如:
dict["userEvent"] = Event.tap我试过:
subscript<Index: ExpressibleByStringLiteral>(index: Index) -> Value? where Value == RawRepresentable {
get {
return self.elements[index as! Key]
}
set {
self.elements[index as! Key] = newValue?.rawValue
}
}但我犯了以下错误:
协议'RawRepresentable‘只能用作泛型约束,因为它具有自或关联的类型要求
和
成员'rawValue‘不能用于协议类型’RawRepresentable‘的值;请使用泛型约束
如何实现这个下标,该下标将在设置新值的同时自动解开枚举大小写?
发布于 2019-09-24 08:52:36
RawRepresentable具有泛型约束。您可以做的是为下标添加“返回”类型作为泛型约束中的另一个参数。如下所示:
subscript<Index: ExpressibleByStringLiteral, Return: RawRepresentable>(index: Index) -> Return?
但我不相信这种配置会起作用。这个字典包装器是Dictionary的一个不同的子类还是Dictionary的一个扩展
https://stackoverflow.com/questions/58076271
复制相似问题