Avatar
ざっと見た感じ↓あたりが変わっているのかなと思いました。 Error typeを()で囲むようにした throws CatError ↓ throws(CatError) rethrowsにも型を指定できるようになった func foo<E: Error>(closure: () throws(E) -> Void) rethrows(E) Resultはtyped errorを返すように変える extension Result { init(catching body: throws(Failure) -> Success) { ... } } 当時よりも型推論がパワーアップしてもっと簡単に書けるようになった。 enum CatError: Error { case sleeps case sitsAtATree } do { try callCat() // throws CatError if something { throw CatError.asleep // throws CatError } } catch .asleep { openFoodCan() } // note: CatError can be thrown out of this do...catch block when the cat isn't asleep**Rationale**: