[英]Swift 5.7 - Make existential 'any' protocol conform to Hashable
我在理解一致的存在变量时遇到了一些麻烦。
由于这里的Animal
将始终符合Hashable
,我想any Animal
也必须符合Hashable
。
但是,我看到的错误让我不这么认为。 有人可以帮助解释为什么会发生这种情况,如果可能的话,帮我解决它?
import SwiftUI
import PlaygroundSupport
protocol Animal: Hashable {
var name: String { get }
}
struct Cow: Animal {
let name: String
}
struct Chicken: Animal {
let name: String
}
let anAnimalList: [any Animal] = [Cow(name: "Aaron"), Chicken(name: "Billy"), Cow(name: "Charlie"), Chicken(name: "Delilah")]
struct myView: View {
@State private var anAnimal: (any Animal)?
var body: some View {
VStack {
List(anAnimalList, id: \.self, selection: $anAnimal) { animal in // ERROR: Type 'any Animal' cannot conform to 'Hashable'
Text("Animal")
}
Text("Animal is \(anAnimal?.name ?? "Null")")
}
}
}
PlaygroundPage.current.setLiveView(myView())
我发现这个答案解释了发生这种情况的原因以及如何解决它: Scott Thompson 的回答
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.