3.2 闭包

90 阅读1分钟

定义

  • swift的闭包类似OC中的block

  • 闭包是引用类型

  • 语法

  {(参数列表) -> 返回值 in
    闭包代码
  }
  • 定义一个闭包
//完整写法
let closure:(Int, Int) -> Int = {
  (a: Int, b: Int) -> Int in
  return a * b
}

//简写1: 闭包类型自动推导
let closure1 = {
  (a: Int, b: Int) -> Int in
  return a * b
}

//简写2: 参数类型,返回类型,return 都可省略
let closure2 = {
  (a, b) in
  a * b
}

//简写3: 省略参数,省略in,$0,$1代替
let closure3 = {
  $0 * $1
}

//简写4: 只写一个*
let closure4 = {
  *
}

  • 闭包作为函数参数
func cloFunc(_ a: Int, _ b: Int, closure: (Int, Int) -> Int) -> Int {
  return operation(a, b)
}
// 传入闭包
cloFunc(4, 2, closure: closure1)

cloFunc(4, 3, closure: *)