Avatar
Intersection はオーバーロードと等価だから、↓みたいな問題も起こる。 func foo() -> Int { ... } func foo() -> Double { ... } // 今 let f: () -> Int = foo // () -> Int の foo が代入される // Intersection があったら let f: (() -> Int)&(() -> Double) = foo let g = foo // ↑と同じ let h: () -> Int = foo // この場合 h の実体は何? () -> Int の foo ?それとも f や g と同じ? (edited)
1:50 AM
あと、 Typed Throws が長い間議論されてるけど、導入するならエラー型を一つに絞るのがいいという話になってるけど、 Union Type があると func foo() throws BarError|BazError -> Foo ができるので複数エラー投げられることになってしまって台無しに・・・。