Swift编程语言SequenceType协议中的一些比较有用的接口
2016-06-28 02:44
337 查看
在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方法是通过一个联结函数,将数组中所有元素以某一指定的联结方式最终变为一个标量值。
下面的代码简单介绍了这几种接口的使用与效果:
看起来确实很方便吧~
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 = [1, 2, 3, 4] 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 & 1) == 1 { 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 & 1) == 0 } print("inums = \(inums)")
看起来确实很方便吧~
相关文章推荐
- swift:运算型属性和存储型属性
- swift:懒加载控件
- Swift基础--Swift中的异常处理
- Swift基础--可选绑定和守护绑定
- swift --字符串常用方法总结
- Swift微博项目--Swift中通过类名字符串创建类以及动态加载控制器的实现
- Swift 与 JSON 数据
- Swift开发小技巧--自定义Log
- Swift中单例的实现方法
- Swift 可选类型完美解决占位问题
- 访问控制和protected
- Swift里的值类型与引用类型
- Swift Swift与C语言指针友好合作
- Swift 造个类型不是梦-白话Swift类型创建
- Swift Access Control 权限控制的黑与白
- 语法总结(Summary of the Grammar)
- Swift 泛型参数(Generic Parameters and Arguments)
- Swift 模式(Patterns)
- Swift 特性(Attributes)
- Swift 声明(Declarations)