1

Swift 5, iOS 13

I got this code... which is awful.

var horizonalOpacity = [Bool](repeating: false, count: 24)

self.horizonalOpacity[0] = true
self.horizonalOpacity[1] = true
self.horizonalOpacity[2] = true
self.horizonalOpacity[3] = true
self.horizonalOpacity[4] = true
self.horizonalOpacity[5] = true
self.horizonalOpacity[6] = true
self.horizonalOpacity[7] = true
self.horizonalOpacity[8] = true
self.horizonalOpacity[9] = true
self.horizonalOpacity[10] = true
self.horizonalOpacity[11] = true

I can replace with this code, which is ok.

for loop in 0...11 {
   self.horizonalOpacity[loop] = true
}

But can I do better? Can I use map perhaps? or an array slice perhaps?

user3069232
  • 8,587
  • 7
  • 46
  • 87

2 Answers2

1

What about

var horizonalOpacity = [Bool](repeating: true, count: 12) + 
                       [Bool](repeating: false, count: 12)
Asperi
  • 228,894
  • 20
  • 464
  • 690
1

You can also try to use mapInPlace extension proposed here:

extension MutableCollection {
    mutating func mapInPlace(_ x: (inout Element) -> ()) {
        for i in indices {
            x(&self[i])
        }
    }
}

Then you'd just write:

horizonalOpacity.mapInPlace { $0 = true }
pawello2222
  • 46,897
  • 22
  • 145
  • 209