【发布时间】:2019-05-22 16:33:41
【问题描述】:
我正在尝试使用布尔数组作为一种机制来转换另一个相同大小的 Ints 数组中的特定索引,同时忽略相应选择数组中包含 false 的索引。
基本上,我希望这个函数只转换相应布尔选择数组中包含“真”的值,而让其他值保持原样。
以下是我设法(在某种程度上)使用 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
}
【问题讨论】:
标签: arrays swift functional-programming boolean