variable - t.type swift




Перечисление Generic Swift 4 с типом Void (2)

ТЛ; др

Можно ли создать экземпляр универсального члена перечисления Swift 4 со связанным значением типа Void ?

Фон

Я использую простое перечисление Result (аналогично типичному Result ):

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

Теперь я хотел бы использовать это перечисление для представления результата операции, которая не дает фактического значения результата; операция либо выполнена успешно, либо не выполнена . Для этого я бы определил тип как Result<Void> , но я борюсь с тем, как создать экземпляр Result, ни let res: Result<Void> = .success ни let res: Result<Void> = .success() работает.


Void - это простые typealias для пустого кортежа: (), поэтому вы можете использовать его как любой из следующих:

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

В Swift 3 вы можете опустить связанное значение типа Void :

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

В Swift 4 вам нужно передать соответствующее значение типа Void :

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




swift4