在Swift编程语言中,大部分容器类(比如Array、Dictionary)都实现了SequenceType协议。SequenceType协议中有不少有趣且简便的方法可用来实现我们不少实际需求。这里将简单介绍其中的map、flatmap、reduce、以及filter方法。

map的原型是:@warn_unused_result func map<T>(@noescape _ transform: (Self.Generator.Element) throws -> T) rethrows -> [T]

简单来说,就是含有一个函数类型形参,返回为[T]数组的函数。这个函数的功能是将指定transform函数所返回的元素组合起来,构成一个新的数组。transform函数的类型为:(数组元素类型) -> 自定义返回类型。

flatmap与map类似,只不过其transform函数所返回的类型是一个optional。然后最终返回的数组是不包含空值的新数组。

reduce方法是通过一个联结函数,将数组中所有元素以某一指定的联结方式最终变为一个标量值。

下面的代码简单介绍了这几种接口的使用与效果:

        let arr = [, , , ]

        let nums = arr.map() { (elem: Int) -> Float in
return Float(elem) + 2.0
}
print("nums = \(nums)") let nums2 = arr.flatMap() { (elem: Int) -> Float? in
if (elem & ) == {
return Float(elem) + 1.5
}
else {
return nil
}
}
print("nums2 = \(nums2)") let f = arr.reduce(Float(0.1)) { (src: Float, elem: Int) -> Float in
return src * Float(elem)
}
print("f = \(f)") let inums = arr.filter() { (elem: Int) -> Bool in
return (elem & ) ==
}
print("inums = \(inums)")

看起来确实很方便吧~

最新文章

  1. C++的性能C#的产能?! - .Net Native 系列五:.Net Native与反射
  2. 推荐几款jquery图片切换插件
  3. Mysql主从配置,实现读写分离
  4. Performance tips
  5. 1.5.4 什么是Filter--过滤器
  6. UVa 1629 Cake slicing (记忆化搜索)
  7. FFmpeg YUV视频序列编码为视频
  8. web离线应用
  9. Necklace of Beads(polya计数)
  10. acFileStorage equivalent
  11. mysql灵活分页存储过程
  12. .NET遇上Docker - 使用Docker Compose组织Ngnix和.NETCore运行
  13. Kafka笔记——技术点汇总
  14. P2051 [AHOI2009]中国象棋
  15. 【转】iptables 命令介绍
  16. 软硬件协同编程 - C#玩转CPU高速缓存(附示例)
  17. PyCharm:选择性忽略 PEP8 警告
  18. javascript自制函数图像生成器
  19. xdebug的配置
  20. The .NET weak event pattern in C#

热门文章

  1. 斯坦福第十四课:降维(Dimensionality Reduction)
  2. 使用MyBatis Generator自动创建代码
  3. [2011山东ACM省赛] Sequence (动态规划)
  4. mfc/格式转换
  5. T4模板之初体验(语法)
  6. Modifiers: virtual, override, new, abstract, sealed, internal
  7. Static Constructors
  8. 在Mac OS X上用自己编译出的CoreCLR运行.NET程序
  9. [游戏模版6] Win32 graph
  10. paip.utf-8,unicode编码的本质输出unicode文件原理 python