在Playground的Show Quick Help
部分,我遇到了一个奇怪的问题。
我打开Show Quick Help
部分以查看first
的类型,这是Array
的属性,当我试图找到另一个奇怪错误的解决方案时。
是什么意思?
有人有什么主意吗?
类型
Double??
答案 0 :(得分:6)
Double??
是Optional<Optional<Double>>
的简写形式,它只是嵌套的Optional
。 Optional
是通用enum
,其Wrapped
值实际上可以是另一个Optional
,因此您可以创建嵌套的Optional
。
let optional = Optional.some(2)
let nestedOptional = Optional.some(optional)
此处nestedOptional
的类型为Int??
。
对于您的特定示例,item.first
是Double??
,因为item
本身的类型为[Double?]
,而Array.first
也返回Optional
,因此您会得到一个嵌套的Optional
。
您在compactMap
上进行的data
调用没有任何效果,因为您在外部数组上调用了该数组,外部数组的元素本身是非可选数组。要从嵌套数组中过滤出nil
元素,您需要在map
上data
,然后在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书之一。