Swift详解之五-----------map,filter,reduce
map,filter,reduce
关于Swift 中String 、数组 、字典的基本用法这里就不再赘述了,这些都很简单 不会的 在用得时候baidu下就行了。这里主要看下这几个高阶函数 mapmap方法,其获取一个闭包表达式作为其唯一参数。 数组中的每一个元素调用一次该闭包函数,并返回该元素所映射的值(也可以是不同类型的值)。 具体的映射方式和返回值类型由闭包来指定。 当提供给数组闭包函数后,map方法将返回一个新的数组,数组中包含了与原数组一一对应的映射后的值。 来看看map的定义 来看个例子 : let prices = [10,20,30]
let strPrices = prices.map { "¥($0)" }
这个语法大家应该不陌生吧 ,陌生的去把上节闭包重新看一遍因为map只有一个参数,后面直接用了闭包的尾随 ,不会加括号了 得到的结果 : 这只是一个简单的实例 ,其实你可以对每个元素进行很复杂的运算,这里不再赘述 ,用法如此,点到为止 、哈哈 filterfilter 顾名思义 就是用来过滤的 ,它使用来选择数组中满足条件的元素 let p = [10,33,44,87,15]
let res = p.filter{ $0>20 }
得到结果 : reducereduce方法把数组元素组合计算为一个值,并且会接受一个初始值,这个初始值得类型可能和数组元素类型不同。来看定义 。 let p1 = [20,10]
let sum = p1.reduce(0) { $0+$1 }
print(sum) //50
这个实例给了个初始为Int类型的 0 ,用这个 0 去加数组所有元素 let sum2 = p1.reduce(4) { $0+$1 }
print(sum2) //54
初始值换成4 就会得到这样的结果 ,是不是也不是那么难理解呀! let sum1 = p1.reduce("2") { " ($0),($1)" }
print(sum1) // 2,10
如果初始值是一个字串就不能用加法了。不过可以拼接得到上面的结果 。 map和filter都很好理解 ,reduce稍微难理解一点 需要说明的是数据比较大的时候,高阶函数会比传统实现更快,因为它可以并行执行(如运行在多核上),除非真的需要更高定制版本的map,reduce和filter,否则可以一直使用它们以获得更快的执行速度 希望以上的实例可以帮助大家更好的理解这几个函数! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |