我想在可能的情况下扩展Array
,将数组转换为集合。以下扩展可以做到这一点,但在调试器控制台中,集合的元素被显式标记为AnyHashable
。为什么会这样?但更重要的是,是否有一种方法可以确定扩展中元素(即String
(的具体类型,从而返回类型匹配集?
extension Array where Element: Hashable {
var asSet: Set<AnyHashable> {
return Set(self)
}
}
let someArray: [String] = ["kiwi", "mango", "mango"]
print(someArray.asSet) // actual output: [AnyHashable("kiwi"), AnyHashable("mango")]
// desired output: ["kiwi", "mango"]
您可以避免AnyHashable
,并返回一组泛型类型:
var asSet: Set<Element> {
return Set(self)
}
在您的示例中,这将返回一个Set<String>
。