我Show Quick Help在 Playground 的部分遇到了未知类型。
我已经打开Show Quick Help部分来查看类型first是Array.
问题是,类型末尾的双标记是什么?
这很熟悉
Double?
Run Code Online (Sandbox Code Playgroud)
未知类型
Double??
Run Code Online (Sandbox Code Playgroud)
Double??是 的简写符号Optional<Optional<Double>>,它只是一个嵌套的Optional. Optional是一个泛型enum,其Wrapped值实际上可以是另一个Optional,因此您可以创建嵌套的Optionals。
let optional = Optional.some(2)
let nestedOptional = Optional.some(optional)
Run Code Online (Sandbox Code Playgroud)
nestedOptional这里的类型是Int??。
对于您的具体示例,item.firstis Double??,因为item它本身是类型[Double?]并且Array.first还返回 an 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]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
264 次 |
| 最近记录: |