ios - Swift3,可变字符串数组的扩展

标签 ios swift3 extension-methods

我相信您在 [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 文档。

关于ios - Swift3,可变字符串数组的扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41146129/

相关文章:

ios - 如何在按下主页按钮时在 IOS 中显示顶部栏。?

swift - 如何检查相对于 super View 的 View 状态

ios - 连接 BLE 时在后台运行的推送通知应用程序

c# - 是否在扩展方法类中调用扩展方法?

ios - iOS如何解码ISO6937编码的文本?

ios - 全新安装的核心数据迁移

ios - UIButton,左边是文字,右边是图片

ios - 如何使用从 Swift 到 Objective-C 的 Notification.Name 扩展?

c# - 实例化扩展方法? C#

ios - 在iOS中,是否应在将UIImageView.image分配给新的UIImage之前将其设置为“nil”?