Avatar
↓は OK という理解。 protocol P {} protocol Q { associatedtype T: P func foo1() -> T func foo2() -> T } extension Int: P {} struct S: Q { func foo1() -> some P { return 1 } func foo2() -> some P { return 2 } } let s = S() var a = s.foo1() a = s.foo2() // OK
4:15 AM
この opaque result type の概念、素晴らしいと思うけどコードの見た目が微妙そう。 var a: some Foo = ... let b: some Foo = ... a = b // コンパイルエラー ab が同じ型に見えるのに。
4:15 AM
いや、だからこその some なのか。
4:16 AM
some Foosome Foo だと英語的に同じじゃないという意味になるのか。