Avatar
omochimetaru 9/3/2018 4:21 AM
半分ぐらいまで読んだ
4:23 AM
Existentialと違ってコンパイルタイムには一つの型だから
4:24 AM
func f() -> P { if Bool.random() { return 17 } else { return "hello, existential" } } こういうのはできないってことらしい
4:24 AM
func f() -> P { /* ... */ } func g() -> opaque P { /* ... */ } let fArray = [f(), f(), f()] // contains a mix of String and Int at run-time let gArray = [g(), g(), g()] // homogeneous array of g()'s opaque result type
4:24 AM
let vf1 = f1() // type of vf1 is the opaque result type of f1()
4:24 AM
関数名ごとに型が解決されて?ついてるから (edited)
4:25 AM
↓これの最後の行はエラー??
それはエラーな気がする。
4:25 AM
"opaque <Protocol>" で型なんじゃなくて、 "opaque <Protocol> from <Function>" ってことじゃないですか?
4:26 AM
それで、解決してる真の型が同一であれば違う関数同士でも同一扱いな気がする。