Swift 闭包

闭包

它类似于 C、Objective-C 语言中的 block 或其他一些语言中的匿名函数。

闭包格式

{/Users/bearclawr/Desktop/函数.md
    () -> 返回值类型 in 
    闭包函数体
    retrun 返回值
}

注意:

  1. 不能在闭包参数中设置默认值;
  2. 闭包参数并不会出现外部参数名;
  3. 闭包如果没有参数名和返回值,in 都可以省略。

使用尾随闭包

func calculate(opr: String, funN:(Int, Int) -> Int) {
    switch(opr) {
    case "+":
        print("10 + 5 = \(funN(10, 5))")
    default:
        print("10 + 5 = \(funN(10, 5))")
    }
}

使用闭包表达式

  1. 根据上下文推断类型;
  2. 单行闭包表达式可以省略 return 关键字
  3. 参数名称缩写
  4. 使用闭包返回值

捕获

嵌套函数或者闭包可以在其定义的上下文中捕获常量或变量,即使定义的这些常量或变量的原作用域已经不存在,任然可以在闭包函数体内引用和修改这些常量或变量,这种机制被称为捕获。

func maekArray() -> (String) -> [String] {
    var array: [String] = [String]()
    func addElement(element: String) -> [String] {
        array.append(element)
        return array
    }
    return addElement
}

let f1 = makeArray()
print("--- f1---")
print(f1("张三"))
print(f1("李四"))
print(f1("王五"))

你可能感兴趣的:(Swift 闭包)