arrays - 只有两个可能值的 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)
解决方案
Result
如果您需要的类型。它是一个泛型enum
,其值可以是(success(Value)
适合您的情况)或.Value
Double
failure(Error)
var nums = [Result<Double, Error>]()
然后你可以这样做:
nums.append(.success(5.0))
nums.append(.failure(Error.invalidNumber))
nums.append(.success(10.0))
推荐阅读
- android - 找出在 jetpack compose 中触发重绘的原因
- c++ - “+1 重载 --- '...' 的函数定义未找到”以及“无法启动程序。系统找不到指定的文件”
- c++ - gmock:在 std::vector 的一系列元素上调用匹配器
- java - RecyclerView 有很多项目加载太慢
- javascript - “元素”类型缺少“OfferProps”类型的以下属性:id、firstName、city、price 和另外 2 个。TS2740
- sql - 找到每艘船上的水手
- javascript - 错误:无法从路径或包中检测节点名称
- rust - 当仅另一个特征参数需要生命周期时,编译器会抱怨缺少 PhantomData
- python - 将字典转换为列表,然后从列表转换回字典,但具有相同的值
- amazon-web-services - 我只需要为 3 个云提供商 AWS、GCP、阿里巴巴创建集中式 DNS/LDAP