【问题标题】:Equivalency of closure expressions in Swift, such as with SKAction completionSwift 中闭包表达式的等价性,例如使用 SKAction 完成
【发布时间】:2015-11-02 20:01:45
【问题描述】:

以下闭包表达式是否等价?

sprite.runAction(action, completion: {
    print("done")
})

sprite.runAction(action, completion: {() -> Void in
    print("done")
})

sprite.runAction(action) {() -> Void in
    print("done")
}

在上面使用SpriteKit的runAction()和完成块的例子中,大概第一个例子是隐式的;但是,这是我不确定我是否理解的第三个示例。

在第三个示例中,函数runAction() 不返回任何内容;那么,动作完成时如何调用完成块呢?

【问题讨论】:

标签: swift lambda sprite-kit closures swift2


【解决方案1】:

你所有的例子都是等价的。

sprite.runAction(action, completion: {
    print("done")
})

的简写形式
sprite.runAction(action, completion: {() -> Void in
    print("done")
})

省略参数和返回类型声明, 因为闭包的类型可以是 inferred from the context (这里:来自completion:参数的类型)。

最后,

sprite.runAction(action) {() -> Void in
    print("done")
}

与第二个相同,但使用 "trailing closure syntax".

【讨论】:

    猜你喜欢
    • 2016-06-23
    • 2017-03-31
    • 2021-11-29
    • 2011-02-27
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    相关资源
    最近更新 更多