首页 > 解决方案 > 只有两个可能值的 Swift 数组

问题描述

我想创建一个数组,比如说被调用nums,我希望这个数组保存一个Double或一个Error值,而不是别的。目前,我可以通过nums如下实例化来解决这个问题:

var nums = Array<(Double?, Error?)>()

然后我通过并做类似的事情:

nums.append((5.0, nil))
nums.append((nil, Error.invalidNumber))
nums.append((10.0, nil))

这行得通,但不是拥有我想要nums的 aDouble或a ,而是具有这些值的元组。Error如何更改数组的实例化,以便只需要将其中一个值附加到数组?

我的目标是能够做到这一点:

nums.append(5.0)
nums.append(Error.invalidNumber)
nums.append(10.0)

标签: arraysswiftmultivalue

解决方案


Result如果您需要的类型。它是一个泛型enum,其值可以是(success(Value)适合您的情况)或.ValueDoublefailure(Error)

var nums = [Result<Double, Error>]()

然后你可以这样做:

nums.append(.success(5.0))
nums.append(.failure(Error.invalidNumber))
nums.append(.success(10.0))

推荐阅读