Arrays 在Swift中,我可以使用for In枚举来初始化或重置数组吗?

Arrays 在Swift中,我可以使用for In枚举来初始化或重置数组吗?,arrays,swift,for-in-loop,Arrays,Swift,For In Loop,我目前在Swift类中有一个Bool类型的数组,声明如下: public var cardIsTaken: [Bool] 为了跟上Swift风格指南的要求,尽可能避免为循环编制索引,我有如下内容: for takenFlag in cardIsTaken { takenFlag = true } 。。这给了我一条错误消息“无法分配给'let'值'takenFlag'” 出于好奇,我尝试用“var”声明它,如: 。。这给了我一大堆不同的,不相关的错误信息 我99%确信这意味着在这个时候

我目前在Swift类中有一个Bool类型的数组,声明如下:

public var cardIsTaken: [Bool]
为了跟上Swift风格指南的要求,尽可能避免为循环编制索引,我有如下内容:

for takenFlag in cardIsTaken {
    takenFlag = true
}
。。这给了我一条错误消息“无法分配给'let'值'takenFlag'”

出于好奇,我尝试用“var”声明它,如:

。。这给了我一大堆不同的,不相关的错误信息


我99%确信这意味着在这个时候,如果我想更改每个值,我不能使用“for foo in array”来迭代数组,但是如果有办法,我会全神贯注。

最好的方法是使用数组的内置映射函数

cardIsTaken = cardIsTaken.map { isTaken in true }

正确的,迭代变量被认为是常数(相当于使用<代码>定义<代码> >),这可能是最好的,因为这样,我从C++迁移到SWIFT的一半原因是因为我是一个糟糕的程序员,需要高水平的手握:D谢谢!注意,作为数组a值类型中包含的值,foreach循环将元素的副本分配给
takenFlag
变量,因此即使您能够修改它,也不会影响数组,只影响副本。记住,在处理值类型时,@aruistante和Antonio,是否可以在for-in循环中重新分配迭代变量?确认使用var定义循环的必要性。如果它将元素的一个副本分配给变量,那么可以使用它来替换数组中的项吗?现在这是一个快速的解决方案!请注意,所有高阶数组方法(
map
filter
reduce
)都会创建新数组,但它们不会修改现有的数组。了解您是否依赖于变异现有阵列而不是创建新阵列的副作用,这一点很重要。
cardIsTaken = cardIsTaken.map { isTaken in true }