在集合中迭代和修改Struct

时间:2018-12-18 18:51:18

标签: swift

我有Set的{​​{1}}:

Ints

我想修改var mySet = Set<Int>() mySet.insert(1) mySet.insert(2) // .... // How to iterate over it and, for example, add 1 to each element? for (index, _) in mySet.enumerated() { // How to subscript? A set is unordered! } 并对其做一些额外的计算。如何修改mySet中的每个元素?我可以创建另一个临时mySet并将副本添加到该mySet Set中,然后再将临时Set分配给原始mySet Set,但是我想知道是否还有另一个更好的临时mySet方式。

// Ugly method?
var mySetTemp = Set<Int>()

for value in mySet {
    mySetTemp.insert(value + 1)
}

mySet = mySetTemp

是否有一种方法可以在不创建额外对象的情况下完成上述工作,仅仅是为了在Set的{​​{1}}的迭代中修改原始值?

StructsSet时,我可以通过按索引对元素进行下标来轻松地做到这一点,但是由于Array是无序的,所以我无法做到这一点。

1 个答案:

答案 0 :(得分:4)

您可以将mySet映射为mySet映射为Set

mySet = Set(mySet.map { $0 + 1 })