当前位置: 首页 > 知识库问答 >
问题:

使用flatMap和compactMap[复制]获得不同的结果

孔和畅
2023-03-14

我有一个struct类型的对象数组

struct Caste {
    var arr = [1,2]
}

let siri =  [Caste(), Caste(), Caste()]

现在我想要一个数组,其中每个对象数组的所有元素组成如下所示:

let re1 = siri.compactMap { $0.arr }
print("COMPACT: \(re1)")
let re2 = siri.flatMap { $0.arr }
print("FLAT: \(re2)")

结果:

紧凑型:[[1,2][1,2][1,2][1,2]]扁平:[1,2,1,2,1,2]

由于平面图在Swift 4.1中已弃用,我尝试使用compactMap,但它给出了数组数组而不是单个数组。

如何通过compactMap实现,就像我通过flatMap实现一样。

共有1个答案

酆俊远
2023-03-14

flatMap被拆分为自身和compactMapflatMap(代码>平面图)是为了展平一个数组,而compactMap(代码>紧凑图)的目的是获取一个数组并删除所有构成数组的nil对象。这有个计数

 类似资料:
  • 有人能描述一下flatMap与compactMap的这种行为吗?compactMap不是刚刚重命名为flatMap吗?因为我发现他们表现不同 这是它打印的 有人能告诉我为什么当我使用嵌套数组不扁平吗?

  • 问题内容: 在 Swift 4.1中 似乎已弃用。但是在 Swift 4.1中 有一个新方法正在做同样的事情?有了它,您可以变换集合中的每个对象,然后删除所有为零的项目。 像flatMap一样 像compactMap 在做同样的事情。 这两种方法有什么区别?苹果为何决定重命名该方法? 问题答案: Swift标准库为函数定义了3个重载: 可以通过两种方式滥用最后一个重载函数: 考虑以下struct和

  • 代码: 当Charset.forName(name)的name为UTF-7时发生问题; 在我的Linux平台上,我总是得到非法的CharsetNameException。 但在我的windows平台上看起来还可以。 两个平台有相同的源代码和java版本 Java版本"1.7.0_17"Java(TM)SE运行时环境(build 1.7.0_17-b02)JavaHotSpot(TM)64位服务器V

  • 在Java中: 生成长度为2的字符串数组。 另一方面,在python中: 生成长度为4的数组。要在Java中获得相同的结果,我必须做些什么?

  • 我必须使用google places api实现餐厅定位服务,如下所示: https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=43.7666321,11.2546258 但结果与使用谷歌地图进行的近距离搜索大不相同: https://www.google.it/maps/search/Ristoranti/@4

  • 看起来map和flatMap返回不同的类型。 返回applySchema函数(或spark 1.3中的createDataFrame)所需的org.apache.spark.rdd.rdd[org.apache.spark.sql.row]。 但是,返回org.apache.spark.rdd.rdd[Any],我不能调用applySchema()。 如何在flatMap()之后使用applySc