转载自:https://segmentfault.com/a/1190000004050907

Map

map函数能够被数组调用,它接受一个闭包作为参数,作用于数组中的每个元素。闭包返回一个变换后的元素,接着将所有这些变换后的元素组成一个新的数组。

这听起来有些复杂,但它是相当简单的。想象你拥有一个string类型的数组:


let testArray = ["test1","test1234","","test56"]

map函数的闭包接收一个字符串(类型为string)作为参数,原因在于我们调用函数处理的数组元素类型为String。本例中,我们想要返回一个整型数组,逐个对应字符串元素成员的字符长度。因此闭包的返回类型为Int?.


let anotherArray = testArray.map { (string:String) -> Int? in let length = string.characters.count guard length > 0 else {
return nil
} return string.characters.count
} print(anotherArray) //[Optional(5), Optional(8), nil, Optional(6)]

FlatMap

flatMap很像map函数,但是它摒弃了那些值为nil的元素。


let anotherArray2 = testArray.flatMap { (string:String) -> Int? in let length = string.characters.count guard length > 0 else {
return nil
} return string.characters.count
} print(anotherArray2) //[5, 8, 6]

另外一个与map函数不同之处在于:倘若元素值不为nil情况下,flapMap函数能够将可选类型(optional)转换为非可选类型(non-optionals)。

引用

Image:@ Fly_dragonfly / shutterstock.com

本文由 SwiftGG 翻译组翻译,已经获得作者翻译授权,最新文章请访问 http://swift.gg

最新文章

  1. Full Gc经历分析
  2. zoj 1610
  3. windows 装 Crypto.Cipher
  4. php访问数据库思维导图
  5. 【HDU3802】【降幂大法+矩阵加速+特征方程】Ipad,IPhone
  6. DataGridView绑定BindingList<T>带数据排序的类
  7. MessageDigest 类
  8. 201521123088《java程序与设计》第9周学习总结
  9. Python框架学习之Flask中的Jinja2模板
  10. chrome浏览器访问Google的插件“谷歌访问插件”以及常用插件
  11. hive和hbase区别和联系
  12. Solr学习笔记之6、Solr学习资源
  13. 手淘适配-flexible
  14. jQuery 中bind(),live(),delegate(),on() 区别
  15. vue 中ref 的使用注意事项
  16. poj 3041 Asteroids 题解
  17. BinaryFormatter、SoapFormatter、XML3种序列化
  18. django系列6--Ajax01 特点, 基本格式, 向前端发送数据
  19. Vertex Modifier of Surface Shader
  20. jmeter "you cannot switch bacause data cannot be converted to target Tab data,empty data to switch"报错

热门文章

  1. Zeppelin使用spark解释器
  2. aspnet5安装ef7备忘
  3. erlang-string
  4. iOS动画编程
  5. IE8“开发人员工具”使用详解上(各级菜单详解)
  6. centos 10字母随机文件病毒清理
  7. eclipse 中执行 main 函数如何添加参数
  8. 转 s3c2440硬件学习----内存管理单元MMU
  9. C++编写一个简单的DLL
  10. git分支--branch