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

时间:2015-01-21 02:24:45

标签: swift closures

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

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

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

打勾?()做什么?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

在您的代码中,句子ticknil,您可以通过
给它一个值 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”语句中调用它。