【问题标题】:Set a subset of an array to the same value in swift [duplicate]在swift中将数组的一个子集设置为相同的值[重复]
【发布时间】:2020-06-12 17:59:47
【问题描述】:

Swift 5、iOS 13

我得到了这个代码......这太糟糕了。

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

我可以用这个代码替换,没关系。

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

但是我可以做得更好吗?我可以使用地图吗?或者一个数组切片?

【问题讨论】:

  • 我认为没有比 for 循环更简洁的方法了
  • 我已经删除了我的答案,因为之前已经给出了相同的解决方案:stackoverflow.com/a/61889091/1187415
  • 好的,我也投了那个票 :)

标签: arrays swift dictionary


【解决方案1】:

怎么样

var horizonalOpacity = [Bool](repeating: true, count: 12) + 
                       [Bool](repeating: false, count: 12)

【讨论】:

【解决方案2】:

你也可以尝试使用mapInPlace扩展建议here

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

那你就写:

horizonalOpacity.mapInPlace { $0 = true }
猜你喜欢
  • 1970-01-01
  • 2021-01-18
  • 1970-01-01
  • 2014-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多