func makeOpaque<T>(_: T.Type) -> some Any { /* ... */ } var x = makeOpaque(Int.self) x = makeOpaque(Double.self) // error: "opaque" type from makeOpaque<Double> is distinct from makeOpaque<Int>
やっぱり↓で正しそう。 func foo1() -> some Foo { return Foo1() } func foo2() -> some Foo { return Foo2() } var foo = foo1() foo = foo2() // コンパイルエラー
func p1() -> some P { return S(1) } func p2() -> some P { return S(2) } var s = p1() s = p2() // OK ?エラー?
(edited)