我可以在swift中使用for循环中的'where'吗?

问题描述 投票:38回答:3

是否有可能在另一个地方使用'where'关键字然后转换?我可以在for循环中使用它吗?

我有一个bools数组,都有一个值,我可以做这样的事情:

var boolArray: [Bool] = []

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


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

这比使用if要好得多,所以我想知道是否有可能在for循环中使用where。 Ty适合你的时间。

for-loop swift where where-clause for-in-loop
3个回答
90
投票

在Swift 2中,添加了新的where语法:

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

在Pre 2.0中,一个解决方案是在迭代之前调用数组上的.filter

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

2
投票

正常的for-loop将迭代列表中的所有元素。但有时我们只想在数据满足某些条件时进行迭代,我们可以在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)
}

-2
投票

是的,您可以在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()
}
© www.soinside.com 2019 - 2024. All rights reserved.