Я хочу, чтобы моя функция установила все «выбранные» уровни var «channel» аналогично тому, как это делается в функции «setLevel».В идеале было бы здорово встроить это прямо в мою функцию map / zip, так как функции в любом случае являются гражданами первого класса.
public struct Channel {
public var level: UInt8 = 0
public var isEnabled: Bool = false
public var isSelected: Bool = false
public init() {}
}
public final class Universe {
var channels = [Channel](repeating: Channel(), count: 512)
public func setLevel(_ level: UInt8, forChannel index: Int){
channels[index].level = level
}
public func setLevels(_ newVal: UInt8, forChannels selections: [Bool], array oldArray: [UInt8]) -> [Channel] {
let newArray = zip(oldArray, selections).map {
(oldVal, flag) in flag ? newVal : oldVal
}
return channels[index].level = newArray //here’s where I’m stuck
}
}