我相信您在 [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/