Swift 函数Count,Filter,Map,Reduce
2024-09-03 23:45:52
原创Blog,转载请注明出处
blog.csdn.net/hello_hwc
前言:和OC不同,Swift有非常多全局的函数,这些全局函数对简化代码来说非常实用。眼下Swift出到了2.0,只是我这篇文章还是用Swift1.2写的演示样例代码。
Count-统计数量
文档
func count<T : _CollectionType>(x: T) -> T.Index.Distance
Description
Return the number of elements in x.
O(1) if T.Index is RandomAccessIndexType; O(N) otherwise.
演示样例
let arr = [1,2,3,4]
let dic = [1:2,"a":"b"]
let str = "Wenchenhuang"
println(count(arr))//4
println(count(dic))//2
println(count(str))//12
Filter-条件过滤
文档
func filter<S : SequenceType>(source: S, includeElement: (S.Generator.Element) -> Bool) -> [S.Generator.Element]
Description
Return an Array containing the elements of source, in order, that satisfy the predicate includeElement.
演示样例-过滤长度大于4的字符串
let array = ["Wen","Chen","Huang"]
let filteredArray = filter(array, { (element:String) -> Bool in
return count(element)>4;
})
println(filteredArray)
也能够简化
let filteredArray = filter(array) {count($0)>4}
Map - 映射集合类型,返回数组
文档
func map<C : CollectionType, T>(source: C, transform: (C.Generator.Element) -> T) -> [T]
Description
Return an Array containing the results of mapping transform over source.
演示样例
let array = ["Wen","Chen","Huang"]
let mapedAray = map(array, { (element:String) -> Int in
return count(element)
})
println(mapedAray) //[3,4。5]
相同能够简化
let mapedAray = map(array){count($0)}
Reduce - 把数组结合到一起
文档
func reduce<S : SequenceType, U>(sequence: S, initial: U, combine: @noescape (U, S.Generator.Element) -> U) -U
Description
Return the result of repeatedly calling combine with an accumulated value initialized to initial and each element of `sequence`, in turn.
演示样例
let array = ["Wen","Chen","Huang"]
let reduceResult = reduce(array, "Hello ") { (originValue:String, element:String) -> String in
return originValue + element;
}
println(reduceResult) //Hello WenChenHuang
能够简化
let reduceResult = reduce(array, "Hello ") { $0 + $1}
进一步简化
let reduceResult = reduce(array, "Hello ",+)
最新文章
- Mac 下用IDEA时maven,ant打包 (mr 入库hbase)
- Deep Learning 6_深度学习UFLDL教程:Softmax Regression_Exercise(斯坦福大学深度学习教程)
- js中基本操作
- 《C++ Qt 设计模式》8|15拼图 小游戏的简单实现。拜托,别乱点!
- MemCachedClient数据写入的三个方法
- Missile:双状态DP
- UITableView的常用方法与示例
- treegrid.bootstrap使用说明
- 有关ArrayList常用方法的源码解析
- 使用apidoc根据JS文件生成接口文档
- window编程_消息分类
- 使用一年ESB感受
- Lodop打印控件 打印‘接下一页’‘以下空白’
- Java源码阅读的真实体会(一种学习思路)
- java编程常用的快捷键
- vue router 几种方式对比 (转载)
- html调用servlet(JDBC在Servlet中的使用)(2)
- 设置WebBrowser内核渲染模式
- C#中Console.ReadLine()和Console.Read()有何区别?
- Python+Selenium 自动化实现实例-Xpath捕捉元素的几种方法