For loop 我可以使用';其中';在swift的for循环中?
是否有可能在另一个地方使用where关键字,然后使用switch?例如,我可以在for-in循环中使用它吗 我有一个带布尔值的数组,都有一个值,我可以这样做吗:For loop 我可以使用';其中';在swift的for循环中?,for-loop,swift,where,where-clause,for-in-loop,For Loop,Swift,Where,Where Clause,For In Loop,是否有可能在另一个地方使用where关键字,然后使用switch?例如,我可以在for-in循环中使用它吗 我有一个带布尔值的数组,都有一个值,我可以这样做吗: var boolArray: [Bool] = [] //(...) set values and do stuff for value where value == true in boolArray { doSomething() } 这比使用if要好得多,所以我想知道是否有可能将where与for循环结合使用。谢谢您
var boolArray: [Bool] = []
//(...) set values and do stuff
for value where value == true in boolArray {
doSomething()
}
这比使用if要好得多,所以我想知道是否有可能将where与for循环结合使用。谢谢您的时间。在Swift 2中,新增了
,其中添加了语法:
for value in boolArray where value == true {
...
}
在2.0之前的版本中,一种解决方案是在迭代数组之前对数组调用.filter
:
for value in boolArray.filter({ $0 == true }) {
doSomething()
}
是的,您可以使用带有for循环的“where”子句
let arr = [1,2,3,4,5]
for value in arr where value != 0 {
print(value)
}
以你为例,
var boolArray: [Bool] = []
//(...) set values and do stuff
for value in boolArray where value == true {
doSomething()
}
循环的正常将迭代列表中的所有元素。但有时我们只想在数据满足某些条件时进行迭代,在那里我们可以使用where
子句和for-loop
。它只是循环中if
条件的替换
例如:
let numbers = [1,2,3,4,5,6,7]
for data in numbers {
if (data % 2 == 0) {
print(data)
}
}
可以用更简单的方式重写,如下所示:
for data in numbers where data % 2 == 0 {
print(data)
}
对于boolArray.filter()中的值{$0==true}
像这样吗?@BenjaminGruenbaum哇,是的,谢谢,这非常好而且快速!很高兴我能提供帮助-只是想明确这就是你想要的-添加一个答案注意,同时使用filter
和for
循环意味着数组必须被遍历不止一次(首先进行过滤,然后再次在过滤后的数组上)。一个if
在for
中可能看起来不时髦,但它几乎总是更有效。好的解决方案。不过,对于样式,我建议不要使用尾随闭包语法——这样可以更清楚地知道哪个大括号集是boolArray.filter({$0==true}){doSomething()}
Ben中的For循环的主体:For值,你能告诉我为什么下面的For循环没有执行吗?此外,视图不会自动识别为UIBarButtonItem。对于self.view.subview中的视图,其中view.isKindOfClass(UIBarButtonim){view.enabled=false}