双问号在类型末尾意味着什么?

时间:2020-03-04 17:35:41

标签: arrays swift

在Playground的Show Quick Help部分,我遇到了一个奇怪的问题。

我打开Show Quick Help部分以查看first的类型,这是Array的属性,当我试图找到另一个奇怪错误的解决方案时。


  • 是什么意思?

  • 有人有什么主意吗?


类型

Double??

screen-shot

2 个答案:

答案 0 :(得分:6)

Double??Optional<Optional<Double>>的简写形式,它只是嵌套的OptionalOptional是通用enum,其Wrapped值实际上可以是另一个Optional,因此您可以创建嵌套的Optional

let optional = Optional.some(2)
let nestedOptional = Optional.some(optional)

此处nestedOptional的类型为Int??

对于您的特定示例,item.firstDouble??,因为item本身的类型为[Double?],而Array.first也返回Optional,因此您会得到一个嵌套的Optional

您在compactMap上进行的data调用没有任何效果,因为您在外部数组上调用了该数组,外部数组的元素本身是非可选数组。要从嵌套数组中过滤出nil元素,您需要在mapdata,然后在compactMap内调用map

let nonNilData = data.map { $0.compactMap { $0 } } // [[100, 35.6], [110, 42.56], [120, 48.4], [200]]

答案 1 :(得分:0)

这是Swift最重要的功能之一。这是可选。它可以有一个值或为零。

我强烈建议您下载一本有关Swift的书,例如Apple提供的免费Swift书之一。

相关问题