我对在新版Xcode beta中出现的Swift语言中的any
语法有些困惑。
我有一个视图,它需要使用any Hashable
,而我试图将其传递给一个需要Hashable
参数的参数。然而,我从Xcode中得到了这个错误:Type 'any Hashable' cannot conform to 'Hashable'
。我不明白为什么会出现这种情况,因为我认为any Hashable
本质上是一个类型擦除的Hashable,对吗?
这里是一个完整的代码示例,以说明我的尝试:
struct AwesomeNavigationLink: View {
var itemToLinkTo: any Hashable
var label: String
var body: some View {
NavigationLink(value: itemToLinkTo) {
Text(label)
}
}
}
这会导致在 NavigationLink 行上出现上述错误。
我的问题是:我是否应该能够将 任何可哈希对象
传递给 可哈希对象
?如果可以,如何实现,或者这是一个 bug 吗?如果不行,为什么?谢谢!
NavigationSplitView
更新了。 - alenmany
不是一个神奇的类型擦除器。any X
的意思与X
以前的意思完全相同,没有更多也没有更少。协议不能符合自身。 - matt