这个闭包,()->() 在 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
'
我对 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
'