美文网首页
Swift 2 学习笔记 9.闭包

Swift 2 学习笔记 9.闭包

作者: Maserati丶 | 来源:发表于2018-11-21 20:28 被阅读0次

课程来自慕课网liuyubobobo老师


闭包
  • 闭包的基本语法
// 产生一个随机数组
var arr: [Int] = []
for _ in 0..<100 {
    arr.append(Int(arc4random()%1000))
}
// 按从大到小排序
func biggerNumberFirst (a: Int , b: Int) -> Bool {
    return a > b
}
arr.sorted(by: biggerNumberFirst)
// 使用闭包 按从小到大排序
arr.sorted(by: {(_ a: Int, _ b: Int) -> Bool in
    return a > b
})
  • 闭包语法的简化
arr.sorted(by: {(_ a: Int, _ b: Int) -> Bool in
    return a > b
})

arr.sorted(by: {(_ a: Int, _ b: Int) -> Bool in return a > b})

arr.sorted(by: {a, b in return a > b})

arr.sorted(by: {a, b in a > b})

arr.sorted(by: {$0 > $1})

arr.sorted(by: >)
  • 结尾闭包
arr.sorted(by: {a, b in return a > b})
// 闭包也可以作为一个尾随闭包被书写在 sorted(by:) 方法的括号外面
arr.sorted(){a, b in return a > b}
// 如果闭包表达式是函数唯一的实际参数并且你把闭包表达式用作尾随闭包
// 那么调用这个函数的时候你就不需要在函数的名字后面写一对圆括号
arr.sorted{a, b in return a > b}
  • 内容捕获
// 产生一个随机数组
var arr: [Int] = []
for _ in 0..<100 {
    arr.append(Int(arc4random()%1000))
}

// 按最接近500排序
arr.sort(){(a, b) -> Bool in abs(a-500) < abs(b-500) }

//闭包能够从上下文捕获已被定义的常量和变量
let num = 700
arr.sort(){(a, b) -> Bool in abs(a-num) < abs(b-num) }
  • 闭包和函数是引用类型
func runningMeters(with metersPerDay: Int) -> () -> Int {
    var totalMeters = 0
    return {
        totalMeters += metersPerDay
        return totalMeters
    }
}

// planA 是一个 ()->Int 的函数
var planA = runningMeters(with: 3000)
// planA() 只执行了闭包,闭包中的参数通过内容捕获获取值
planA()  // 3000
planA()  // 6000
planA()  // 9000

var anotherPlan = planA
anotherPlan()  // 12000
planA()  // 15000

planA = runningMeters(with: 3000)
planA()  //3000

相关文章

  • Swift 2 学习笔记 9.闭包

    课程来自慕课网liuyubobobo老师 闭包 闭包的基本语法 闭包语法的简化 结尾闭包 内容捕获 闭包和函数是引用类型

  • Swift学习笔记(1)

    SWift学习笔记 闭包 闭包表达式 闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift 中的闭包与 ...

  • swift学习笔记 ⑥ —— 闭包

    Swift学习笔记 - 文集 闭包,就是能够读取其他函数内部变量的函数。Swift 中的闭包与 C 和 OC 中的...

  • swift闭包学习

    闭包作为参数 参考 Swift学习之闭包

  • Swift5.x-枚举(中文文档)

    引言 继续学习Swift文档,从上一章节:闭包,我们学习了Swift闭包相关的内容,如闭包的定义和使用、闭包的简写...

  • swift学习笔记2——函数、闭包

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-i...

  • Swift学习笔记-闭包

    闭包(closure)是一种更加紧凑,轻量的匿名函数,类似于Java中的lambda表达式 swift中的闭包语法...

  • swift 闭包(学习笔记)

    全局和内嵌函数,实际上是特殊的闭包。闭包符合如下三种形式中的一种: 全局函数是一个有名字但不会捕获任何值的闭包; ...

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

    100 Days of Swift - Day 07 - 闭包Closures part 2 6.6 有参闭包作为...

  • Swift-闭包

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

网友评论

      本文标题:Swift 2 学习笔记 9.闭包

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