Musím napísať funkciu pre trieduvymenuje pomocou poľa v triede pomocou uzávierky. Pri volaní funkcie odkiaľkoľvek, potrebujem index aktuálneho poľa dostupného pre mňa v uzávere. Viem, ako napísať funkciu, ale ako by som vytvoril index (a iné premenné), ktorý by bol k dispozícii pri volaní?
PS:
Toto by malo byť podobné tomu, ako SKNode v SpriteKit vyčíslil cez detskú funkciu s tým, že dcérsky uzol je dostupný pre predané v uzávierke.
odpovede:
1 pre odpoveď č. 1Nie som si istý, čo sa snažíte dosiahnuť.
Možno takto?
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
}
}
výstupy:
0: foo
1: bar