2014-12-02 15 views
21

Czy istnieje również możliwość użycia słowa kluczowego "where" w innym miejscu niż zmiana? Czy mogę na przykład użyć go w pętli for in?Czy mogę używać "where" w pętli for w szybkim?

Mam tablicę z bools, wszystkie o wartości, mogę zrobić coś takiego:

var boolArray: [Bool] = [] 

//(...) set values and do stuff 


for value where value == true in boolArray { 
    doSomething() 
} 

byłoby to o wiele ładniejszy niż używać if, więc zastanawiam się, czy istnieje możliwość używać w połączeniu z pętlą for. Ty za twój czas.

+2

'na wartości boolArray .filter() {0 0 == true} "w ten sposób? –

+0

@BenjaminGruenbaum Wow yeah dzięki, to bardzo ładne i szybkie! – Simon

+0

Cieszę się, że mogłem pomóc - chciałem być jasny, tego właśnie chcesz - dodając odpowiedź –

Odpowiedz

52

W Swift 2, nowa składnia where dodano:

for value in boolArray where value == true { 
    ... 
} 

w Pre 2,0 jednym rozwiązaniem byłoby zadzwonić .filter na tablicy przed jej iteracji:

for value in boolArray.filter({ $0 == true }) { 
    doSomething() 
} 
+2

Dobre rozwiązanie. Jeśli chodzi o styl, sugerowałbym * nie * stosowanie składni zamknięcia końcowego - w ten sposób jest bardziej zrozumiałe, który zestaw nawiasów jest ciałem pętli 'for':' dla wartości w pliku boolArray.filter ({$ 0 == true}) {doSomething()} ' – rickster

+0

Ben, czy możesz mi powiedzieć, dlaczego pętla for poniżej nie zostanie wykonana? Również widok nie jest automatycznie rozpoznawany jako UIBarButtonItem. do wyświetlania w self.view.subviews, gdzie view.isKindOfClass (UIBarButtonItem) { view.enabled = false } –

+0

ładny średnik;) – mafiOSo