如何更改$ 0是否可变?

who*_*mok 0 immutability mutability swift

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

let replace = ["123","87","123","765","som","123","op","123"].map {$0 == "123" ? $0 = "replace" : $0}
Run Code Online (Sandbox Code Playgroud)

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

error: cannot assign to value: '$0' is immutable
Run Code Online (Sandbox Code Playgroud)

那么,这可能会改变0美元变得可变吗?

Emi*_*aez 5

你不需要$0变得可变.map将使用您返回的任何值,因此您可以像这样使用最后一个地图:

.map {$0 == "123" ? "replace" : $0}

map运行该闭包时,无论何时$0匹配"123",它都将返回replace,否则它将返回当前值.