gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 05:26:51 24 4
gpt4 key购买 nike

我正在创建一个包装字典的自定义集合。该集合应该识别何时获得具有 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
}
}

但是我遇到了以下错误:

Protocol 'RawRepresentable' can only be used as a generic constraint because it has Self or associated type requirements

Member 'rawValue' cannot be used on value of protocol type 'RawRepresentable'; use a generic constraint instead

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

最佳答案

RawRepresentable具有通用约束。您可以做的是将“Return”类型添加为下标的通用约束中的另一个参数。像这样:

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

但我不确定这种配置是否有效。这个字典包装器是 Dictionary 的不同子类吗?或 Dictionary 的扩展名?

关于ios - 如何创建处理 RawRepresentable 值的自定义集合下标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58076271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com