2014-12-02 90 views
21

是否有可能在另一個地方使用'where'關鍵字,然後是開關?我可以在for循環中使用它嗎?我可以在swift中使用for循環中的'where'嗎?

我有布爾變量數組,所有的值,我可以做這樣的事情:

var boolArray: [Bool] = [] 

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


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

這將是一個要好很多,如果不是使用了,所以我想知道是否有可能與for循環結合使用。 Ty爲你的時間。

+2

'用於boolArray值.filter(){$ 0 == true}'那樣嗎? – 2014-12-02 00:48:06

+0

@BenjaminGruenbaum哇哇謝謝,這是非常好的和swifty! – Simon 2014-12-02 00:51:21

+0

很高興我可以幫助 - 只是想明確這就是你想要的 - 添加一個答案 – 2014-12-02 00:54:53

回答

52

在夫特2,加入新where語法:

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

在預2.0一個解決辦法是將調用.filter在陣列上你迭代之前:

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

好的解決方案。不過,對於樣式,我建議*不使用尾隨閉包語法 - 這樣就更清楚了哪一組花括號是'for'循環的主體:'用於boolArray.filter({$ 0 == true})中的值。 {doSomething()}' – rickster 2014-12-02 02:02:14

+0

Ben,你能告訴我爲什麼下面的for循環沒有被執行嗎?該視圖也不會被自動識別爲UIBarButtonItem。 for view in self.view.subviews where view.isKindOfClass(UIBarButtonItem){ view.enabled = false } – 2016-03-28 15:48:37

+0

不錯的分號;) – mafiOSo 2017-05-02 14:05:13

相關問題