swift--閉包

1.sorted方法舉例閉包的方法閉包

不用閉包傳入方法(String, String) -> Bool.須要有這同樣一個方法函數

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

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

      return s1 > s2rem

  }class

  var reversedNames = names.sorted(by: backward)sed

利用閉包方法

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

      return s1 > s2make

  })

根據上下文自動判斷類型

  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.自動閉包。。沒看懂

相關文章
相關標籤/搜索