📜  Swift闭包

📅  最后修改于: 2021-01-11 07:51:35             🧑  作者: Mango

迅速关闭

Swift闭包是其他类型的Swift函数,无需使用关键字func和函数名称即可进行定义。

像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关键字。

在这里,闭包接受一个String,我们需要在将闭包称为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类型的值。