我对swift中的闭包有所了解,我知道() - >()意味着它不带任何参数并且什么也不返回,但是,它能做什么?
代码在这里:
var tick:(()->())?
var tickLengthMillis = NSTimeInterval(600)
var lastTick:NSDate?
var timePassed= lastTick!.timeIntervalSinceNow*-1000.0
if timePassed > tickLengthMillis {
lastTick = NSDate()
tick?()
}
打勾?()做什么?
答案 0 :(得分:3)
它可以产生一些日志输出。或者推进进度条。或任何其他类型的副作用。
答案 1 :(得分:1)
在您的代码中,句子tick
是nil
,您可以通过
给它一个值
tick = {//any execution here}
您可以将其视为没有任何参数的函数,并且不返回任何内容
tick?()
表示'如果不是nil
'
答案 2 :(得分:-1)
它用于采用闭包的函数(或方法)。由于闭包可以是任何东西,你可以传递它() - >()。
func someFunctionThatTakesAClosure(closure: () -> ()) {
// function body goes here
}
// here's how you call this function without using a trailing closure:
someFunctionThatTakesAClosure({
// closure's body goes here
})
// here's how you call this function with a trailing closure instead:
someFunctionThatTakesAClosure() {
// trailing closure's body goes here
}
“tick”变量的类型为“optional closure”,因此它可以是nil或某种类型的闭包。如果更改变量中的闭包,则会在下面的“if”语句中调用它。