我想用另一个元素替换数组中的特定元素,如下所示:
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更改为可变的?
r6hnlfcb1#
你不需要$0是可变的。map将使用你返回的任何值,所以你可以像这样使用最后一个map:.map { $0 == "123" ? "replace" : $0 }当map闭包运行时,只要$0匹配"123",它就会返回replace,否则它就会返回当前值。
$0
map
.map { $0 == "123" ? "replace" : $0 }
"123"
replace
qojgxg4l2#
map函数中的这个闭包参数是不可变的,不能改变,因为它是通过值传递的,并从原始值复制。如果它被标记为inout,则可以改变参数的值,这不是你在这里的情况。
inout
2条答案
按热度按时间r6hnlfcb1#
你不需要
$0
是可变的。map
将使用你返回的任何值,所以你可以像这样使用最后一个map:.map { $0 == "123" ? "replace" : $0 }
当
map
闭包运行时,只要$0
匹配"123"
,它就会返回replace
,否则它就会返回当前值。qojgxg4l2#
map
函数中的这个闭包参数是不可变的,不能改变,因为它是通过值传递的,并从原始值复制。如果它被标记为inout
,则可以改变参数的值,这不是你在这里的情况。