这个闭包,()->() 在 swift 中能做什么?

What can this closure, ()->() do in swift?

我对 swift 中的闭包有所了解,并且我知道 ()->() 意味着它不带任何参数并且 returns 什么都不带,但是,它能做什么?
代码在这里:

var tick:(()->())?
var tickLengthMillis = NSTimeInterval(600)
var lastTick:NSDate?

var timePassed= lastTick!.timeIntervalSinceNow*-1000.0
if timePassed > tickLengthMillis {
    lastTick = NSDate()
    tick?()
}

tick?() 有什么作用?

它可以产生一些日志输出。或者提前一个进度条。或任何其他类型的副作用。

它用于需要闭包的函数(或方法)。因为闭包可以是任何东西,你可以传递它 ()->().

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" 语句中调用。

在您的代码中闭包 tick 是一个 nil,您可以通过
给它一个值 tick = {//any execution here}
你可以把它当作一个没有任何参数的函数并且 returns 什么都没有

tick?()表示'execute the closure if it is not a nil'