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

gojuced7  于 2023-04-10  发布在  Swift
关注(0)|答案(2)|浏览(112)

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

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

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

error: cannot assign to value: '$0' is immutable

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

r6hnlfcb

r6hnlfcb1#

你不需要$0是可变的。map将使用你返回的任何值,所以你可以像这样使用最后一个map:
.map { $0 == "123" ? "replace" : $0 }
map闭包运行时,只要$0匹配"123",它就会返回replace,否则它就会返回当前值。

qojgxg4l

qojgxg4l2#

map函数中的这个闭包参数是不可变的,不能改变,因为它是通过值传递的,并从原始值复制。如果它被标记为inout,则可以改变参数的值,这不是你在这里的情况。

相关问题