如何更改$ 0是否可变?

时间:2018-04-02 20:52:17

标签: swift immutability mutability

我想用另一个元素替换数组中的特定元素:

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变得可变吗?

2 个答案:

答案 0 :(得分:5)

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

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

map关闭运行时,只要$0"123"匹配,它就会返回replace,否则会返回当前值。

答案 1 :(得分:-1)

map函数中的此闭包参数是不可变的,不能更改,因为它是按值传递并从原始值复制的。如果标记为inout,则可以更改参数的值,这不是您的情况。