web-dev-qa-db-ja.com

Generic Swift 4 enum with Void関連タイプ

tl; dr

一般的なSwift 4列挙型メンバーを型Voidの関連する値でインスタンス化することは可能ですか?

背景

私は単純なResult列挙型を使用しています( antitypical Result と同様):

_enum Result<T> {
  case success(T)
  case error(Error?)
}
_

次に、この列挙型を使用して、実際の結果値を生成しない操作の結果を表します。操作はsucceededまたはfailedのいずれかです。このために、タイプを_Result<Void>_として定義しますが、Resultインスタンスの作成方法に苦労しています。_let res: Result<Void> = .success_もlet res: Result<Void> = .success()も機能しません。

30
dr_barto

Swift 3では、タイプVoidの関連する値を省略できます。

let res: Result<Void> = .success()

Swift 4では、Void型の関連値を渡す必要があります。

let res: Result<Void> = .success(())
// Or just:
let res = Result.success(())
58
Martin R

Voidは空のTuple:()の単純なtypealiasです。したがって、次のいずれかとして使用できます。

let res1: Result<Void> = .success(())
let res2 = Result<Void>.success(())
let res3 = Result.success(() as Void)
let res4 = Result.success(())
3
KaQu