また、元のコードのvalue, errorは両方ともOptionalなので、以下の4つの組み合わせが存在します。 None, None None, Some Some, None Some, Some 元のコードは(None, None)と(Some, Some)を考慮していません。 つまり、実行時には(None, Some)と(Some, None)の2パターンしか存在しないという約束を前提としたコードとなっています。 Resultを利用するとそのような約束を型で表すことができ、2パターンしか存在しないことがコンパイル時に保証されるようになります。 Cocoaの伝統的なメソッドに対してもResultを使用できます。