我需要为一个类编写一个函数,该类使用闭包通过类中的数组进行枚举。从其他地方调用函数时,我需要在闭包中为我提供当前数组的索引。我知道如何编写函数,但是在调用时如何使索引(和其他变量)可用?
P.S。
这应该类似于SpriteKit中的SKNode通过子函数枚举的方式,子节点可用于传入的闭包。
答案 0 :(得分:1)
我不确定你想要达到的目标。
也许是这样的?
class MyClass {
var ary:[String] = ["foo","bar","baz"]
func enumerateArray(block: (String, Int, inout Bool) -> Void) {
var stop = false
for e in enumerate(ary) {
block(e.element, e.index, &stop)
if stop {
break
}
}
}
}
let obj = MyClass()
obj.enumerateArray { str, idx, stop in
println("\(idx): \(str)")
if str == "bar" {
stop = true
}
}
输出:
0: foo
1: bar