码迷,mamicode.com
首页 > 编程语言 > 详细

swift--闭包

时间:2016-12-05 16:52:26      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:string   上下   判断   return   利用   var   back   ack   上下文   

1.sorted方法举例闭包的方法

不用闭包传入方法(String, String) -> Bool.需要有这一样一个方法

  let names = ["Chris", "Alex", "Ewa", "Barry", "Daniella"]

  func backward(_ s1: String, _ s2: String) -> Bool {

      return s1 > s2

  }

  var reversedNames = names.sorted(by: backward)

利用闭包

  reversedNames = names.sorted(by: { (s1: String, s2: String) -> Bool in

      return s1 > s2

  })

根据上下文自动判断类型

  reversedNames = names.sorted(by: { s1, s2 in return s1 > s2 } )

隐藏return隐藏返回的类型

  reversedNames = names.sorted(by: { s1, s2 in s1 > s2 } )

参数也可以省略

  reversedNames = names.sorted(by: { $0 > $1 } )

只留符号作为表达式

  reversedNames = names.sorted(by: >)

改成尾随包

  reversedNames = names.sorted() { $0 > $1 }

如果闭包表达式是函数或方法的唯一参数,使用尾随闭包时,可以把 () 省略掉

  reversedNames = names.sorted{ $0 > $1 }

2.值捕获栗子

func makeIncrementer(forIncrement amount: Int) -> () -> Int {

    var runningTotal = 0

    func incrementer() -> Int {

        runningTotal += amount

        return runningTotal

    }

    return incrementer

} 

  let incrementByTen = makeIncrementer(forIncrement: 10)

  incrementByTen()//10

  incrementByTen()//20

  let incrementBySeven = makeIncrementer(forIncrement: 7)

  incrementBySeven()//7

  incrementBySeven()//14

  incrementByTen()//30

3.逃逸闭包

4.自动闭包

swift--闭包

标签:string   上下   判断   return   利用   var   back   ack   上下文   

原文地址:http://www.cnblogs.com/huoran1120/p/6134431.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!