有人可以在Swift中解释这种"停止"语法吗?

Sir*_*dib 2 closures swift

self.enumerateChildNodesWithName(spriteName) {
        node, stop in
        // Do something with node.
Run Code Online (Sandbox Code Playgroud)

}

这是我正在研究的一些SpriteKit Swift代码的示例.

它看起来像是C#的lambda表达式,但我不确定.

我想知道的stop in一部分是部分,它是什么?

我尝试在Swift文档中查找信息,但是stop in过于通用了,无法找到任何信息.

什么是stop in?它在做什么?

Sul*_*han 5

该方法声明为:

func enumerateChildNodesWithName(_ name: String,
                  usingBlock block: (SKNode,
                                      UnsafeMutablePointer<ObjCBool>) -> Void)
Run Code Online (Sandbox Code Playgroud)

在之间代码的部分{}一个尾部封这是block.node并且stop是参数名称.它也可以写成:

self.enumerateChildNodesWithName(spriteName) {
        node: SKNode, stop: UnsafeMutablePointer<ObjCBool> in
Run Code Online (Sandbox Code Playgroud)

请参阅Swift指南中的闭包.

stop参数是在枚举所有项之前停止枚举的一种方法.请参阅如何在SpriteKit中使用Swift使用"enumerateChildNodesWithName"?欲获得更多信息.基本上,使用它的唯一方法是设置stop.memory = true以防止枚举下一个项目.如果您正在搜索项目并且已经找到了您正在寻找的项目,这非常有用.