【发布时间】:2023-01-10 20:10:34
【问题描述】:
我有一个简单的结果类型:
enum Result<ValueType> {
case success(ValueType)
case failure(Error)
}
我想在结果数组和可选结果数组上创建一个函数,以将所有结果合并为一个。但是,我正在努力寻找一种表达方式。这就是我想要做的:
extension Array<Optional<Result<ValueType>>> {
func combined() -> Result<[ValueType]>? {
var values: [ValueType] = []
for result in self {
switch result {
case .success(let value)?:
values.append(value)
case .failure(let error)?:
return .failure(error)
case .none:
return nil
}
}
return .success(values)
}
}
这显然不能编译。但有没有办法真正表达这一点?
【问题讨论】:
-
别忘了
values.reserveCapacity