代码之家  ›  专栏  ›  技术社区  ›  J. Doe

迭代并修改集合中的结构

  •  0
  • J. Doe  · 技术社区  · 7 年前

    我有一个 Set 属于 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 Set 设置 原封不动 迈塞特 ,但我想知道是否还有更好的方法。

    // Ugly method?
    var mySetTemp = Set<Int>()
    
    for value in mySet {
        mySetTemp.insert(value + 1)
    }
    
    mySet = mySetTemp
    

    有没有一种方法可以在不创建额外对象的情况下执行上述操作,而只是为了在迭代过程中修改原始值 设置 属于 Structs ?

    设置 Array ,我可以通过按索引为元素下标来轻松实现,但由于 Sets 都是无序的,我做不到。

    1 回复  |  直到 7 年前
        1
  •  4
  •   Robert Dresler Gustavo Vollbrecht    7 年前

    您可以指定 mySet 如图所示 迈塞特 Set

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