我很好奇AnyView
SwiftUI 中的默认实现。如何将具有不同泛型类型的结构放入协议数组中?
例如:
let a = AnyView(Text("hello"))
let b = AnyView(Image(systemName: "1.circle"))
let genericViews = [a, b] // No compile error
Run Code Online (Sandbox Code Playgroud)
而我的实现:
struct TypeErasedView<V: View>: View {
private var _view: V
init(_ view: V) {
_view = view
}
var body: V {
_view
}
}
let a = TypeErasedView(Text("Hello"))
let b = TypeErasedView(Image(systemName: "1.circle"))
let genericViews = [a, b] // compile error
Run Code Online (Sandbox Code Playgroud)
编译错误将是“异构集合文字只能被推断为 '[Any]';如果这是有意的,请添加显式类型注释”。
有没有人有任何想法?
swiftui ×1