我想用枚举包装异步函数响应的结果:
enum Result<T> {
case Success(T)
case Failure(Error)
}
主要思想是使用switch case .Success(let rep) case .Failure (let err) etc.
确定异步功能是成功还是失败。
问题是我需要/想要将结果枚举放在Channel<T>
上。
做点什么
let ch = Chan<Result>() // define a channel on which I can put a 'result'
// for example when fetching a user
if(success) put(ch, .Success(user)) //put .Success with user inside on the channel
else put(ch, .Error(error))
问题是Swift不允许我将Result
- 枚举放在Chan<T>
上。
是否可以将在.Success a&#39; -generic struct / class中包含的Enum值包含在内?例如,同一个枚举可能包含一个错误的故障。
有没有办法用枚举值类型包装泛型而不违反Swift类型系统的大法则?
PS:
以上是伪代码,put是运算符func <~<T>(l: Chan<T>, r: T)
的别名,
Chan来自github.com/tidwall/Safe/blob/master/Source/chan.swift