我有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}}的迭代中修改原始值?
当Structs
是Set
时,我可以通过按索引对元素进行下标来轻松地做到这一点,但是由于Array
是无序的,所以我无法做到这一点。
答案 0 :(得分:4)
您可以将mySet
映射为mySet
映射为Set
mySet = Set(mySet.map { $0 + 1 })