首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建处理RawRepresentable值的自定义集合下标

如何创建处理RawRepresentable值的自定义集合下标
EN

Stack Overflow用户
提问于 2019-09-24 08:38:55
回答 1查看 112关注 0票数 0

我正在创建一个自定义集合,包装字典。这个集合应该识别它什么时候得到一个枚举,它的原始值为: string/int,如果是这样的话,它将自动从它中提取"rawValue“。

我的一个下标应该处理这个情况--下标的键是String类型,值是Enum大小写--例如:

代码语言:javascript
复制
dict["userEvent"] = Event.tap

我试过:

代码语言:javascript
复制
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‘的值;请使用泛型约束

如何实现这个下标,该下标将在设置新值的同时自动解开枚举大小写?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-24 08:52:36

RawRepresentable具有泛型约束。您可以做的是为下标添加“返回”类型作为泛型约束中的另一个参数。如下所示:

subscript<Index: ExpressibleByStringLiteral, Return: RawRepresentable>(index: Index) -> Return?

但我不相信这种配置会起作用。这个字典包装器是Dictionary的一个不同的子类还是Dictionary的一个扩展

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58076271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档