gpt4 book ai didi

swift - 从 AnyIterator 获取 RawRepresentable 的通用数组

转载 作者:行者123 更新时间:2023-11-28 15:27:25 25 4
gpt4 key购买 nike

我看到了这个答案How to enumerate an enum with String type?

现在我正在尝试创建将返回字符串数组的方法使用枚举的原始值。

所以我做到了:

class func enumValues<T>(from array: AnyIterator<T>) -> [T] where T:RawRepresentable, T:Hashable {
var tempArray = [T]()
for item in array{
tempArray.append(item.rawValue)
}
return tempArray
}

但是,我得到这个错误:

Argument type 'T.RawValue' does not conform to expected type'Hashable'

Argument type 'T.RawValue' does not conform to expected type'RawRepresentable'

我该如何解决这个问题?谢谢

最佳答案

您想返回一个包含数组元素原始值的数组,所以返回类型应该是T.RawValue(和约束T:Hashable 不需要):

func enumValues<T>(from array: AnyIterator<T>) -> [T.RawValue] where T: RawRepresentable {
var tempArray: [T.RawValue] = []
for item in array{
tempArray.append(item.rawValue)
}
return tempArray
}

可以简化为

func enumValues<T>(from array: AnyIterator<T>) -> [T.RawValue] where T: RawRepresentable {
return array.map { $0.rawValue }
}

或更一般地,对于任何原始可表示序列:

func enumValues<S: Sequence>(from sequence: S) -> [S.Iterator.Element.RawValue]
where S.Iterator.Element: RawRepresentable {

return sequence.map { $0.rawValue }
}

另一方面,有人可能会问这是否值得一个单独的函数完全可以,因为您可以直接在给定迭代器/序列/数组。

关于swift - 从 AnyIterator 获取 RawRepresentable 的通用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45056263/

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