以下のように、文字通りのものを止めたいのですbreak
var numbers = [1,2,3,4]
numbers.forEach {
if $0 % 2 == 0 {
break
}
}
ベストアンサー1
forEach
ループではない(ループに渡されるブロックではあるが、ループそのものではない)、より正確にはforEach
Swiftの制御フロー. そのため、 または は使用できませbreak
んcontinue
。
for-in ループを使用するだけです。
例 :
var numbers = [ 1,2,3,4]
func firstEvenNumber(inArray array: [Int]) -> Int? {
var firstMatch : Int?
for number in numbers {
if (number % 2) == 0 {
firstMatch = number
break
}
}
return firstMatch
}
firstEvenNumber(inArray: numbers) // 2
return
クロージャーの内側でも使用できますforEach
が、壊すループは、それだけで戻り値現在のパス内のブロック。
var numbers = [ 1,2,3,4]
func evenNumbers(inArray: [Int]) -> [Int] {
var matches : [Int] = []
numbers.forEach{
if $0 % 2 == 0 {
matches.append($0)
// early return on even numbers
// does not stop forEach
// comparable to a continue in a for in loop
return
}
// only reached on uneven numbers
}
return matches
}
evenNumbers(numbers) // [2,4]