如何展平可选的异构值数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何展平可选的异构值数组相关的知识,希望对你有一定的参考价值。

我有一个异构数组,看起来像这样:

let array: [Any] = [
    [1, 2, nil],
    3
]

我想把它变成一个数组[1,2,3]。我怎样才能做到这一点?我可以用某种方式使用compactMap { $0 }吗?

答案
extension Collection {
    func flatMapped<T>(with type: T.Type? = nil) -> [T] {
        return flatMap { ($0 as? [Any])?.flatMapped() ?? ($0 as? T).map { [$0] } ?? [] }
    }
}

let array: [Any] = [[1, 2, nil],3]
// Use the syntax of your choice
let flattened1: [Int] = array.flatMapped()         //  [1, 2, 3]
let flattened2 = array.flatMapped(with: Int.self)  //  [1, 2, 3] 
let flattened3 = array.flatMapped() as [Int]       //  [1, 2, 3]

以上是关于如何展平可选的异构值数组的主要内容,如果未能解决你的问题,请参考以下文章

swift中的异构集合文字

如何对可变参数模板函数的异构参数包进行通用计算?

如何使用基于字段值选择的异构委托制作 QtQuick TableView / TreeView

云边端一体化的异构AI计算

云边端一体化的异构AI计算

一种基于结构信息检索文档的思路(html,pdf,html,xml,doc,ppt,这样的异构文档应该如何检索呢?)