Swift 闭包
Swift闭包是Swift函数的另一种类型,可以在不使用关键字func和函数名的情况下定义。
与Swift函数类似,Swift闭包也可以接受参数和返回值。它还包含一组在调用后执行的语句,并且可以像函数一样分配给变量/常量。
使用Swift闭包的原因
主要有两个原因使用Swift闭包:
完成块
闭包用于在某个任务执行完成后提供通知。
高阶函数
闭包可以作为高阶函数的输入参数传递。高阶函数是一种接受函数作为输入并返回类型为函数的值的函数类型。在这种情况下,闭包被用于省略了func关键字和函数名,使代码更易读和简洁。
语法
{ (parameters) -> return type in
statements
}
在这里, in 是一个关键字,用于在闭包中分隔返回类型和语句。闭包可以接受参数和返回值。
让我们创建自己的闭包:
示例
简单闭包
let simpleClosure = {
}
simpleClosure()
这里,我们声明了一个简单的闭包 { },它不接受任何参数,不包含任何语句,也不返回任何值。这个闭包被赋值给常量simpleClosure。
包含语句的闭包
示例
let simpleClosure = {
print("Hello JavaTpoint")
}
simpleClosure()
输出:
Hello JavaTpoint
在上面的程序中,我们定义了一个名称为simpleClosure的闭包,它被推断为() -> (),因为它不接受任何参数,并且不返回任何值。
包含参数的闭包
示例
let simpleClosure:(String) -> () = { name in
print(name)
}
simpleClosure("Hello JavaTpoint")
输出:
Hello JavaTpoint
在上面的程序中,类型闭包(String) ->()接受一个类型为字符串的输入,但不返回值。为了在闭包的语句中使用传递的值,我们在参数名name后面加了in关键字。
在这里,闭包接受一个字符串,我们在调用闭包时需要传递字符串,例如simpleClosure(“Hello JavaTpoint”)。
返回值的闭包
闭包可以像函数一样返回值。要从闭包返回一个值,我们必须在括号()内明确添加要返回的类型,然后使用 ->。
示例
let simpleClosure:(String) -> (String) = { name in
let greeting = "Hello JavaTpoint " + "A platform for all technologies"
return greeting
}
let result = simpleClosure("Hello JavaTpoint")
print(result)
输出:
Hello JavaTpoint A platform for all technologies
您可以看到,在上述程序中,我们将类型定义为 **simpleClosure: (String) – > (String) ** 因为Swift无法自动推断返回值的闭包类型。类型 (String) -> (String) 指定闭包需要一个类型为String的输入,并且返回一个类型为String的值。