Muszę napisać funkcję dla klasy, którawylicza przez tablicę w klasie przy użyciu zamknięcia. Podczas wywoływania funkcji z innego miejsca, potrzebuję indeks bieżącej tablicy dostępnej dla mnie w zamknięciu. Wiem, jak napisać funkcję, ale w jaki sposób udostępnić indeks (i inne zmienne) podczas dzwonienia?
P.S.
Powinno to być podobne do tego, w jaki sposób SKNode w SpriteKit wyliczył poprzez funkcję potomną, a węzeł podrzędny jest dostępny dla przekazanego w zamknięciu.
Odpowiedzi:
1 dla odpowiedzi № 1Nie jestem pewien, co próbujesz osiągnąć.
Może tak?
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
}
}
wyjścia:
0: foo
1: bar