how do people deal with iterating a Swift struct value-type property?

后端 未结 1 1731
醉酒成梦
醉酒成梦 2020-12-15 12:43

Here\'s an obvious situation that must arise all the time for people:

struct Foundation {
    var columns : [Column] = [Column(), Column()]
}
struct Column :         


        
相关标签:
1条回答
  • 2020-12-15 13:28

    As of Swift 4, a compromise is to iterate over the indices of a mutable collection instead of the elements themselves, so that

    for elem in mutableCollection {
        // `elem` is immutable ...
    }
    

    or

    for var elem in mutableCollection {
       // `elem` is mutable, but a _copy_ of the collection element ...
    }
    

    becomes

    for idx in mutableCollection.indices {
        // mutate `mutableCollection[idx]` ...
    }
    

    In your example:

    for idx in f.columns.indices {
       f.columns[idx].cards.append(Card()) 
    }
    

    As @Hamish pointed out in the comments, a future version of Swift may implement a mutating iteration, making

    for inout elem in mutableCollection {
       // mutate `elem` ...
    }
    

    possible.

    0 讨论(0)
提交回复
热议问题