如何将 $0 更改为可变的?

How to change $0 to be mutable?

我想用另一个元素替换数组中的特定元素,如下所示:

let replace = ["123","87","123","765","som","123","op","123"].map {[=10=] == "123" ? [=10=] = "replace" : [=10=]}

但我不能这样做,因为编译器向我抛出错误:

error: cannot assign to value: '[=11=]' is immutable

那么,是否可以将 $0 更改为可变的?

您不需要 [=10=] 可变。 map 将使用您 return 的任何值,因此您可以像这样使用最后一张地图:

.map {[=12=] == "123" ? "replace" : [=12=]}

map 闭包为 运行 时,每当 [=10=] 匹配 "123" 时,它将 return replace,否则它将 return当前值。

map 函数中的这个闭包参数是不可变的,不能更改,因为它是按值传递的,是从原始值复制而来的。更改参数的值是可能的,如果它被标记为 inout,这不是你的情况。