antitypical/Resultの型パラメータがなぜそのようになっているのか疑問に思ったので質問します。
antitypical/Resultでは Resultの定義は以下のようになっています。(必要部分のみ抜き出し)
swift
1enum Result<Value, Error: Swift.Error> { ... }
疑問に思ったのは以下の2点です。
######1. なぜ以下の定義ではないのか
~~enum Result<Value, Error> { … }~~~
Error: Swift.Error
とせずとも単にError
とするだけで全く同じことになると思うのですが、
なぜError: Swift.Error
としているのでしょか?
######2.そもそもError
を型パラメータにする必要があるのか
Swiftの場合はErrorが既に定義されているので
swift
1enum Result<Value> { ... }
としても同等の事が実装出来ると思います。なぜError
を型パラメータに含めているのでしょ。
こちらに関してはSwift以外の実装に合わせたのではないか、使用時にエラーの型を明示/限定できるようにではないか、とは思っていますが、ほかの理由があるのかが知りたいです。
以上、よろしくお願いします
追記
Swiftには標準でErrorという型があります。
そのため
~~
enum Result<Value, Error: Swift.Error> { // ErrorはSwift.Errorに制限される。
case value(Value)
case error(Error)
}
~~
としても
~~
enum Result<Value, Error> { // ErrorはSwift.Errorそのもの。
case value(Value)
case error(Error)
}
~~
としてもほとんど違いはなく、また
swift
1enum Result<Value> { 2 case value(Value) 3 case error(Error) // 型パラメータを持たずともError型を持てる 4}
としてもerrorは表現可能です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/10 07:37
2018/02/10 07:42
2018/02/10 13:48
2018/02/10 15:06