美文网首页iOS学习iOS Developer
swift 随笔:闭包及数组三大高阶函数

swift 随笔:闭包及数组三大高阶函数

作者: Theendisthebegi | 来源:发表于2017-03-15 18:44 被阅读51次
  1. 简介
    Swift一大特性便是使用简洁的头等函数
    闭包语法代替了复杂的blocks语法。希望我们在Swift中不再需要像fuckingblocksyntax中所描述的语法。(头等函数-即可将函数当作参数传递给其他的函数,或从其他的函数里返回出值,并且可以将他们设定为变量,或者将他们存储在数据结构中)。 闭包是自包含的blocks,它能在代码中传递和使用。Blocks/闭包(同一概念的不同命名)在Cocoa和Cocoa Touch中广泛使用,是iOS 框架的核心。 闭包是极其强大的语言特性,它能够使我们编写程序的时候更快,更容易,更少出错。 Swift的标准数组支持三个高阶函数:map,filter和reduce。Objective-C的NSArray没有实现这些方法
  2. map函数
    map用于将每个数组元素通过某个方法进行转换。
    用一个例子来说明。今天我办生日聚会,要迎接很多人,并且为每个人都准备了一句欢迎词。我们要怎么做呢?首先我们将迎接的人放进一个数组名叫guestList,然后用一个名叫greetPeople的函数为每个人生成欢迎词:
func greetPeople(person: String) -> String 
{ 
      return "Hello, (person)!"
 }

let guestList = ["Chris", "Jill", "Tim"] 

let fullGreetings = guestList.map(greetPeople) 

print(fullGreetings)

打印结果自然是:

["Hello, Chris!", "Hello, Jill!", "Hello, Tim!"]

也当然也可以这样写

let guestList = ["Chris", "Jill", "Tim"]
let fullGreetings = guestList.map{"Hello, ($0)!"} 
print(fullGreetings) ($0 $1 分别表示第一第二个参数,以此类推)
  1. Filter函数
    顾名思义,是用来筛选的函数。 filter用于选择数组元素中满足某种条件的元素。
  let numbers = [2,8,6,3,7,15,89,453,23,1,0,53];

筛选出大于10的数字

numbers.filter({$0 >10})

就这么简单

  1. Reduce函数
    reduce方法把数组元素组合计算为一个值,并不是单指求和,而是自定义一个公式。
let numbers = [2,8,6,3,7,15,89,453,23,1,15,53];

求和

numbers.reduce(0, {$0 + $1})

这里的0是指初始数字。 也可以简写成

numbers.reduce(0, + )

同理,求积

numbers.reduce(1,*)

相关文章

  • swift数组函数:map,filter

    参考 Swift高阶函数:Map,Filter,Reduce map 不使用map函数来操作数组(同时熟悉闭包的产...

  • swift 随笔:闭包及数组三大高阶函数

    简介Swift一大特性便是使用简洁的头等函数闭包语法代替了复杂的blocks语法。希望我们在Swift中不再需要像...

  • swift函数

    swift高阶函数 map map接受一个闭包作为参数,作用于数组中的每个元素,闭包返回一个变换后的元素,接着将所...

  • Python笔记四 装饰器

    装饰器 = 高阶函数+函数嵌套+闭包 高阶函数 = 参数 or 返回值为函数 函数嵌套 = 在函数中定义函数 闭包...

  • 高阶函数、闭包、柯里化--julia例子

    高阶函数及闭包 【本文来源:(https://juliabook.josephjctang.com/content...

  • swift4 闭包

    swift 闭包 闭包:swift 中 函数是闭包的一种类似于oc的闭包闭包表达式(匿名函数) -- 能够捕获上下...

  • Clojure 学习笔记 :11 函数组合

    Clojure 零基础 学习笔记 偏函数 串行宏 高阶函数 闭包 函数组合 --- 简单而又有力的武器 在函数式编...

  • Swift-闭包

    Swift 闭包 函数 ()->() Swift 中的闭包和 Objective-C 中的 block 类似,闭包...

  • Python 进阶语法

    高阶函数 python 的高阶函数非常 Nice,高级函数的核心就是闭包{},闭包就可以把一段{}包裹的代码当成对...

  • 100 Days of Swift - Day 06 - 闭包(

    100 Days of Swift - Day 06 - 闭包Closures 6.1 闭包 Swift函数也属于...

网友评论

    本文标题:swift 随笔:闭包及数组三大高阶函数

    本文链接:https://www.haomeiwen.com/subject/wekrnttx.html