⚖️some╱any╱generics
╱🚧 under construction -> homogeneous type, heterogeneous type
// implementer
func f() -> some Shape {
Circle()
}
// user
let a = f()// implementer
func g() -> any Shape {
// omitted ...
}
// user
let b = g()// implementer
struct Container<T> {
var value: T
}
// user
let c = Container(value: 42)// type of property
// -------------------------------
var a: View = Text("Hello") // ⛔:`View` has associatedtype 'Body`
var b: some View = Text("Hello") // ✅ opaque type
var c: any View = Text("Hello") // ✅ existential type// return type (of computed property)
// -------------------------------------
let n = Int.random(in: 1...5)
// ✅ OK (same type, homogeneous)
var a: some View {
if n % 2 == 0 { Text("Even") }
else { Text("Odd") }
}
// ⛔ NG! (Text ≠ Label)
var b: some View {
if n % 2 == 0 { Text("Even") }
else { Label("Hello", systemImage: "bolt.fill") }
}
// ✅ OK (heterogeneous, implicit type erasure)
var c: any View {
if n % 2 == 0 { Text("Even") }
else { Label("Hello", systemImage: "bolt.fill") }
}Last updated