在Swift-4中玩闭包(第-1部分)
根据快速的编程语言
闭包是可以独立传递的功能块,可以在代码中传递和使用。 Swift中的闭包类似于C和Objective-C中的块以及其他编程语言中的lambda。
简单来说,闭包是没有名称的函数,它们只是从定义它们的上下文中捕获并存储对任何常量和变量的引用。 这称为关闭这些常量和变量。
闭包表达式语法
{(参数)->返回类型
陈述
}
让我们从一个简单的闭合开始,它打印一条消息
在上面的示例中,创建了一个简单的闭包并分配给myfirstClosure 。我们也可以说创建了一个没有名称的函数,我们可以像普通函数一样调用它。
myfirstClosure()
带参数的闭包
闭包可以接受参数。要使闭包接受参数,我们必须在括号内列出它们,然后我们必须在 关键字中编写 这样,闭包主体就可以在此之后启动。带参数的闭包示例如下。
让myfirstClosure = {(withParameter:String)在
打印(“最后,我用\(withParameter)创建了我的第一个闭包”)
}
myfirstClosure(“ firstparameters”)
而输出将是
最后,我用firstparameters创建了我的第一个Closure
具有返回值类型的闭包
闭包也可以返回值。因此,要使闭包返回值,我们需要对闭包进行少量修改,例如Syntax。在括号中列出参数后,我们必须编写-> datatype,然后输入In Keyword,最后使用return像普通函数一样。示例如下。
闭包作为参数:-
我们也可以像函数的参数一样传递闭包,就像我们将字符串或整数作为函数的参数传递一样。但是这样做时,我们在语法上要做的事情很少。在函数内部定义每个参数类型时,当闭包用作函数内的参数时,如果我们什么都不返回,则需要将闭包(参数)类型指定为()-> datatype ,我们可以简单地将语法更改为()-> Void。 这里的void什么都没有。示例定义如下
导入UIKit
让闭包= {
打印(“我是一个简单的封闭者”)
}
func simplefunctionWithClosures(closure:()-> Void){
打印(“要求关闭”)
关闭()
print(“ Closure被调用,用作函数的参数”)
}
simplefunctionWithClosures(关闭:关闭)
输出在这里
尾随闭包
当我们需要将闭包表达式作为函数的最终参数传递给函数且闭包表达式过长时,将其写为尾随闭包可能会很有用。尾随闭包会在函数调用的括号后编写,即使它仍然存在函数的参数。当使用尾随闭包语法时,我们不会在函数调用的过程中编写闭包的参数标签。这是swift官方文档所说的。
我们将在本文中讨论更多有关此的内容。