Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
For loop 我可以使用';其中';在swift的for循环中?_For Loop_Swift_Where_Where Clause_For In Loop - Fatal编程技术网

For loop 我可以使用';其中';在swift的for循环中?

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循环结合使用。谢谢您

是否有可能在另一个地方使用where关键字,然后使用switch?例如,我可以在for-in循环中使用它吗

我有一个带布尔值的数组,都有一个值,我可以这样做吗:

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}