[英]Initialize closure in Swift
我知道如何初始化一个不带参数的闭包,如下所示:
class testClass {
var myClosure: () -> ()
init(){
myClosure = {}
}
}
但是,我无法弄清楚如何初始化闭包,如下所示:
var myClosure: (Int) -> ()
我怎么做?
类型(Int) -> ()
的闭包需要一个参数(Swift会告诉你,不能隐式忽略该参数)。
因此,如果您想要一个带有一个参数的闭包,则必须明确指定:
let myClosure: (Int) -> () = { parameter in }
(如果您不需要参数,可以用通配符替换它来忽略它)
let myClosure: (Int) -> () = { _ in }
或者,您可以使用隐式参数( $0
, $1
等),但它们仅在闭包中某处使用参数时才起作用(例如,通过将其分配给另一个变量或将其作为参数传递给函数):
let myClosure: (Int) -> () = { print($0) }
简单的例子:
class TestClass {
var myClosure: (Int) -> ()
init(){
func myFunc(_:Int) {}
self.myClosure = myFunc
}
}
或者使用匿名函数:
class TestClass {
var myClosure: (Int) -> ()
init(){
self.myClosure = {_ in}
}
}
或者你可以在myClosure
的声明中进行myClosure
:
class TestClass {
var myClosure : (Int) -> () = {_ in}
init(){
}
}
但是如果你在初始化时没有myClosure
的值,为什么不把它变成一个Optional?
class TestClass {
var myClosure: ((Int) -> ())?
init(){
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.