闭包中的Swift传入变量

时间:2014-12-02 13:58:27

标签: ios arrays xcode swift closures

我需要为一个类编写一个函数,该类使用闭包通过类中的数组进行枚举。从其他地方调用函数时,我需要在闭包中为我提供当前数组的索引。我知道如何编写函数,但是在调用时如何使索引(和其他变量)可用?

P.S。

这应该类似于SpriteKit中的SKNode通过子函数枚举的方式,子节点可用于传入的闭包。

1 个答案:

答案 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