Swift3,对 String 数组进行 m​​utablizate 的扩展

Swift3, extension to mutablizate a String array

我相信你在这样的 [String] 上进行了扩展...

extension Sequence where Iterator.Element == String {

假设我想改变数组 - 我的意思是说,更改数组中的每个字符串。怎么办?

extension Sequence where Iterator.Element == String {
   func yoIzer() {
      for s in self { s = "yo " + s }
   }
}

那不行。

(这只是一个例子,可能需要更复杂的处理:您可能想避免只使用过滤器。)

序列是不可变的,并且在任何情况下更改元素 s 都不会改变它来自的序列的任何内容(s 是一个副本)。

你想说的是:

extension MutableCollection where Iterator.Element == String {
    mutating func yo() {
        var i = self.startIndex
        while i != self.endIndex {
            self[i] = "yo" + self[i]
            i = self.index(after: i)
        }
    }
}

这是一个测试:

var arr = ["hey", "ho"]
arr.yo()
print(arr)
// ["yohey", "yoho"]

该方法实际上直接来自 Swift 文档。