前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >map compactMap flatMap

map compactMap flatMap

作者头像
大话swift
发布2019-07-04 11:19:57
8070
发布2019-07-04 11:19:57
举报
文章被收录于专栏:大话swift

昨天说要输xpath语法,但是呢今天在公司被折腾了一天没有找到好的题材和做完好的技术储备,于是呢这会结合官方文档拿些小知识点来做个今天的总结……

map

Returns an array containing the results of mapping the given closure over the sequence’s elements.

我们来解释一下:大意是这么回事,就是你对已有的数组进行一次内部元素遍历的转化。说白了就是进去抓一圈,出来可以是阿猫阿狗?

下面是个?

var array = [1,2,3,4]

var toStrArray = array.map { (value:Int) -> String in

return "\(value)"

}

我们将数据转一圈转换成 [String]

compactMap

Returns an array containing the non-nil results of calling the given transformation with each element of this sequence.

我们来解释一下:同样是转一圈,进行转化的过程中可能有事败不符合规则的 比如 String -> Int ,怎么办?这个就内部消化掉,只把成功的返回给你

let charArray = ["A", "B","1","2345"]

var intValues = charArray.compactMap { (value:String) -> Int? in

return Int(value)

}

map compactMap对比

同:

都按照规则把数据进行一个类型转化

不同

map 对于不按规则的同样给你返回一个值 nil

compactMap 对于转化失败的丢弃掉,也就是说只返回符合规矩被转化的数据

测试数据["A", "B","1","2345"]

结果 [1, 2345] [nil, nil, Optional(1), Optional(2345)]

flatMap

Returns an array containing the concatenated results of calling the given transformation with each element of this sequence.

大意是返回一个数组,这个数组包含所有按照规则转换过程中转换出的数组的元素

是不是感觉定义比较绕,我们拆分成两个部分步骤来说:

1 转换规则是将源数组中的元素进来之后返回出一个数组

2 对返回的数组进行合并

我们按照这过程使用上述测试

var flatArray = charArray.flatMap { (value:String) -> Array<Any> in

return Array(repeating: value, count: value.count)

}

var test = charArray.map { (value:String) -> Array<String> in

return Array(repeating: value, count: value.count)

}

flatMap 结果 ["A", "B", "1", "2345", "2345", "2345", "2345"]

map 结果 [["A"], ["B"], ["1"], ["2345", "2345", "2345", "2345"]]

我们发现 flatMap = map.joined

print(flatArray as! [String] == Array(test.joined()))

打印结果是 true完全一样,当然了,这个只是一个用例,感兴趣的可以自己多测试几个用例

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大话swift 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档