1. //: Playground - noun: a place where people can play
  2.  
  3. import UIKit
  4.  
  5. var str = "Hello, playground"
  6.  
  7. /// 使用map函数,进行数组内部数据的转换,map中接受一个转换函数
  8. var array = [,,,,]
  9. var newArray = array.map({$ * })
  10. print(newArray)
  11.  
  12. /// 使用reduce 函数 求和
  13. var sum = array.reduce(, combine: +)
  14. print(sum)
  15.  
  16. /// 使用 filter来验证tweet中是否包含选定的若干关键字中的一个
  17. let words = ["Swift","iOS","cocoa","OSX","tvOS"]
  18. let tweet = "This is an example tweet larking about Swift"
  19. let valid = !words.filter({tweet.containsString($)}).isEmpty
  20. print(valid)
  21.  
  22. let valid1 = words.contains(tweet.containsString)
  23. print(valid1)
  24.  
  25. let valid2 = tweet.characters.split(" ").lazy.map(String.init).contains(Set(words).contains)
  26. print(valid2)
  27.  
  28. /// 使用split map 分隔内容
  29. let text = "窗前明月光 疑是地上霜 举头望明月 低头思故乡"
  30. let lines = text.characters.split(" ").map(String.init)
  31. print(lines[])
  32. print(lines[])
  33. print(lines[])
  34. print(lines[])
  35.  
  36. /// 使用forEach 高阶函数便利
  37. let name = "urai"
  38. (...).forEach({print("Happy Birthday " + (($ == ) ? "dear \(name)":"to You"))})
  39. (...).forEach{print("Happy Birthday " + (($ == ) ? "dear \(name)":"to You"))}
  40.  
  41. // MARK: - 查找数组中符合条件的数据
  42. extension SequenceType {
  43.  
  44. typealias Element = Self.Generator.Element
  45.  
  46. func partitionBy(fu: (Element) -> Bool) -> ([Element],[Element]) {
  47.  
  48. var first = [Element]()
  49. var second = [Element]()
  50.  
  51. for el in self {
  52.  
  53. if fu(el) {
  54.  
  55. first.append(el)
  56. }
  57. else {
  58.  
  59. second.append(el)
  60. }
  61. }
  62. return (first,second)
  63. }
  64. }
  65.  
  66. let part = [, , , , , ].partitionBy{$ < }
  67. print(part)
  68.  
  69. // MARK: - 一种更简介的查找方式
  70. extension SequenceType {
  71.  
  72. func anotherpartitionBy(fu: (Self.Generator.Element) -> Bool) -> ([Self.Generator.Element],[Self.Generator.Element]) {
  73.  
  74. return (self.filter(fu),self.filter({!fu($)}))
  75. }
  76. }
  77.  
  78. let part1 = [, , , , , ].anotherpartitionBy{$ < }
  79. print(part1)
  80.  
  81. /// 使用的是分区元组,但效率不如上边的高
  82. var part2 = [, , , , , ].reduce( ([],[]), combine: {
  83. (a:([Int],[Int]),n:Int) -> ([Int],[Int]) in
  84. (n<) ? (a.+[n],a.) : (a.,a.+[n])
  85. })
  86. print(part2)

代码

swift 的高阶函数的使用代码的更多相关文章

  1. 高阶函数简述 js

    1.简述 高阶函数似乎是一种先进编程的的技术.然而,并不是. 高阶函数其实就是将函数作为参数或者返回值的函数.其中作为参数的函数一般是回调函数. 2.例子 (1)最简单的例子 大家都熟悉数组的sort ...

  2. Javascript中的高阶函数介绍

    高阶函数:高阶看上去就像是一种先进的编程技术的一个深奥术语,一开始我看到的时候我也这样认为的. Javascript的高阶函数 然而,高阶函数只是将函数作为参数或返回值的函数.以下面的Hello,Wo ...

  3. JavaScript进阶之高阶函数篇

    JavaScript进阶之高阶函数篇 简介:欢迎大家来到woo爷说前端:今天给你们带来的是JavaScript进阶的知识,接下来的系列都是围绕着JavaScript进阶进行阐述:首先我们第一篇讲的是高 ...

  4. 如何在JavaScript中使用高阶函数

    将另一个函数作为参数的函数,或者定义一个函数作为返回值的函数,被称为高阶函数. JavaScript可以接受高阶函数.这种处理高阶函数的能力以及其他特点,使JavaScript成为非常适合函数式编程的 ...

  5. Swift 烧脑体操(三) - 高阶函数

    前言 Swift 其实比 Objective-C 复杂很多,相对于出生于上世纪 80 年代的 Objective-C 来说,Swift 融入了大量新特性.这也使得我们学习掌握这门语言变得相对来说更加困 ...

  6. Swift 中的高阶函数和函数嵌套

    高阶函数 在Swift中,函数可做为“一等公民”的存在,也就意味着,我们可以和使用 int 以及 String 一样,将函数当做 参数.值.类型来使用. 其中,将函数当作一个参数和值来使用可见下: t ...

  7. 高阶函数---swift中的泛型介绍(一步步实现Map函数)

    说明 本文内容均出自函数式 Swift一书, 此处整理仅仅是为了自己日后方便查看, 需要深入研究的话, 可以点进去购买, 支持原作者 本书由 王巍–新浪微博大神翻译 OneV's Den 喵神博客 接 ...

  8. c#语言-高阶函数

    介绍 如果说函数是程序中的基本模块,代码段,那高阶函数就是函数的高阶(级)版本,其基本定义如下: 函数自身接受一个或多个函数作为输入. 函数自身能输出一个函数,即函数生产函数. 满足其中一个条件就可以 ...

  9. python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))

    1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层的函数,可以把复杂的任务分解成简单的任务,这种一步一步的分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...

随机推荐

  1. 续关于C#的微信开发的入门记录一

    前几天写了一篇博客<关于C#的微信开发的入门记录一>,原文地址:http://www.cnblogs.com/zhankui/p/4515905.html,现在继续完善: 目前很多小伙伴都 ...

  2. [IOS]Swift 遍历预制的本地资源文件

    我事先放了一堆svg文件,但是我是批量使用的,想要直接遍历他们加入到一个list中来,那我直接就遍历他们的名称,把他们的名字组成一个array. var ss:NSString = NSBundle. ...

  3. Oozie_示例

    Oozie 官方示例 解压oozie-examples.tar.gz 将examples/上传到HDFS家目录 $ bin/hdfs dfs -put /opt/cdh-5.6.3/oozie-4.0 ...

  4. Python3.5+selenium操作Chrome浏览器

    1.安装selenium 命令提示符下输入: pip install selenium 2.下载chromedriver 点击下载 3.将解压后的chromedriver.exe放到chrome浏览器 ...

  5. Cannot create file "C:\Users\Administrator\AppData\Local\Temp\EditorLineEnds.ttr"

    这个问题的产生根据网上搜集的资料是因为微软的新补丁KB2970228和KB2982791限制了字体文件的使用机制, 而EditorLineEnds.ttr是delphi字体临时文件, 这就导致了del ...

  6. 自己写的几个android自定义组件

    http://www.see-source.com/androidwidget/list.html 多多指点,尤其是自定义组件的适配问题,希望能有更好的方法

  7. 谢欣伦 - OpenDev原创例程 - 时间同步Time Sync

    很久以前就发现系统自带的时间同步功能很弱,更新时间总是不成功.索性编写一个小软件来更新系统时间,正好用上了我之前写的代码,相关代码可参见文章<化繁为简系列原创教程 - 通信专题 - 无连接套接字 ...

  8. Opencv算法学习二

    1.直方图:图片中像素值分布情况的坐标图. 直方图均衡化:按一定规律拉伸像素值,提高像素值少的点,增加原图的对比度,使人感觉更清晰的函数. equalizeHist( src, dst ); 2.ha ...

  9. IDT HOOK思路整理

    IDT(中断描述符表)分为IRQ(真正的硬件中断)和软件中断(又叫异常). HOOK的思路为,替换键盘中断处理的函数地址为自己的函数地址.这样在键盘驱动和过滤驱动之前就可以截获键盘输入. 思路确定之后 ...

  10. Tomcat 中响应头信息(Http Response Header) Content-Length 和 Transfer-Encoding

    户端(PC浏览器或者手机浏览器)在接受到Tomcat的响应的时候,头信息通常都会带上Content-Length ,一般情况下客户端会在接受完Content-Length长度的数据之后才会开始解析.而 ...