我仍然不确定结构复制或引用的规则。
我想在从数组中迭代结构对象时对其进行突变:例如,在这种情况下,我想更改背景颜色,但是编译器对我大吼大叫
struct Options {
var backgroundColor = UIColor.blackColor()
}
var arrayOfMyStruct = [MyStruct]
...
for obj in arrayOfMyStruct {
obj.backgroundColor = UIColor.redColor() // ! get an error
}
struct
是值类型,因此在for
循环中您正在处理副本。
就像测试一样,您可以尝试以下操作:
struct Options {
var backgroundColor = UIColor.black
}
var arrayOfMyStruct = [Options]()
for (index, _) in arrayOfMyStruct.enumerated() {
arrayOfMyStruct[index].backgroundColor = UIColor.red
}
struct Options {
var backgroundColor = UIColor.blackColor()
}
var arrayOfMyStruct = [Options]()
for (index, _) in enumerate(arrayOfMyStruct) {
arrayOfMyStruct[index].backgroundColor = UIColor.redColor()
}
在这里,您只需枚举索引,然后直接访问存储在数组中的值。
希望这可以帮助。
问题内容: 假设我正在遍历Java中的Map …我不清楚在遍历该Map的过程中我可以做什么。我猜我在Javadoc中对于Iterator接口remove方法的警告大多感到困惑: […]如果在迭代进行过程中以其他方式(而不是通过调用此方法)修改了基础集合,则未指定迭代器的行为。 我知道我可以毫无问题地调用remove方法。但是,在遍历Map集合时,我可以: 使用Map类put方法更改与键关联的值(使
问题内容: 我正在尝试遍历: …并提取中的每个元素。这是我的方法: 这里的问题是对的每次调用都会从中删除元素,从而修改其大小,从而导致以下错误: 那么…当元素动态变化时,我该如何遍历其中的元素呢? 问题答案: 其他人则提到了正确的解决方案,而没有实际阐明。所以这里是: 另外,如果您想安全地在assign函数中更改映射,则需要传入迭代器(只能使用remove函数,并且只能使用一次)或条目来更改值。
问题内容: 我有一个(实际上,我使用的是更复杂的POJO,但是为了我的问题而简化了它) 好像 : 我如何遍历此地图,打印出密钥,然后打印人名,然后打印人年龄,例如: A是Map < String ,Person> 的键 B是Person.getName()的名称 C是Person.getAge()的年龄 我可以使用.values()从地图中提取所有值,如HashMap文档中所述,但是我不确定如何获
通过一个简单的数组,我可以使用标准的循环来实现: 但是如何用实物来做呢?
我想按属性对对象列表进行分组,然后使用(Key,Value)对迭代结果。 我在Java8中找到了用一个属性对对象列表进行分组的方法,如下所示 但结果将只有条目集(在entrySet属性中有值)。键集和值集将具有空值。我想迭代如下内容
假设我想按x坐标对数组进行排序。 我怎么才能做到这一点?