2014-12-02 91 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

相关问题