Я пытаюсь использовать массив логических значений в качестве механизма для преобразования определенных индексов в другой массив Ints одинакового размера, игнорируя при этом индексы, содержащие ложь в соответствующем массиве выбора.
По сути, я хочу, чтобы эта функция преобразовывала только те значения, которые содержат 'true' в соответствующем логическом массиве выбора, и оставляла остальные как есть.
Вот как мне удалось (вроде) заставить его работать, используя цикл for.
Однако я хотел бы знать, как сделать это в более функциональном стиле.Я также открыт для того, чтобы мне сказали, что это абсолютно глупо, и я должен попробовать другой способ.У меня был некоторый успех с использованием функции zip для создания кортежа при каждой рекурсии, но я бы хотел посмотреть, как это делают эксперты.
Я хотел бы посмотреть, возможно ли использовать карту вместо уродливого цикла for, как я сделал здесь.
func changeSelectedChannels(_ newVal: UInt8, forChannels selections: [Bool], array oldArray: [UInt8]) -> [UInt8] {
var j = 0
var newArray = oldArray
for index in selections{
if index == true{
newArray[j] = newVal
j += 1
}else{
j += 1
}
}
return newArray
}