I have a bool array
For example:
var myBool: [Bool] = [true, true, false, true ,false]
and I want to change all the elements from inde
Any mutable collection responds to replaceSubrange:with:
var myBool = [true, true, false, true, false]
myBool.replaceSubrange(1...3, with: Array(repeating: true, count: 3))
or (credits to MartinR)
var myBool = [true, true, false, true, false]
let range = 1...3
myBool.replaceSubrange(range, with: repeatElement(true, count: range.count))
There's no way to achieve this without iterating through all indices of the array that you want to change, so the minimum complexity of your change will be the same regardless of how you achieve this - even if you don't directly use a loop, the underlying implementation will have to use one.
You can assign values directly to a range of indices in your array, but you need to assign another ArraySlice
, not a single Element
.
var myBool: [Bool] = [true, true, false, true ,false]
let range = 1...3
myBool[range] = ArraySlice(range.map { _ in true })
Bear in mind that the complexity of this will be the same as a for loop. If you are experiencing slowness, that's most probably not because of the for loop.