【发布时间】:2018-03-27 09:13:16
【问题描述】:
我们如何更新数组的元素
方法一:-工作代码:-
var numberWords = ["one", "two", "three"]
for i in 0..<numberWords.count {
if numberWords[i] == "two" {
numberWords[i] = "2"
}
}
但我正在寻找使用 Swift 高阶函数的解决方案
方法二:
numberWords = numberWords.filter {
if $0 == "one" {
$0 = "1"//cannot assign value $0 is immutable
}
return true
}
抛出错误:无法赋值 $0 是不可变的
有可能还是方法1是唯一的方法?
【问题讨论】:
-
不要使用
filter(),它没有意义。改用map():numberWords = numberWords.map({ return $0 == "two" ? "2" : $0 }) -
正如@Larme 提到的,你应该
map数组不filter它。使用filter的目的是确定(验证)集合中应该存在哪个元素,这可能导致集合中元素的数量减少;map只是元素的转换,这可能是您的目标...
标签: swift higher-order-functions