在Swift中这个数组过滤器调用有什么问题?

时间:2015-01-13 04:23:12

标签: swift

var arr = [4, 5, 23, 4, 5, 2, 3]
arr.filter({
    return true
})

我收到错误'Int' is not a subtype of ()。我究竟做错了什么?我读过的所有内容似乎都表明这应该有效。

2 个答案:

答案 0 :(得分:2)

var arr = [4, 5, 23, 4, 5, 2, 3]
let arr2 = arr.filter {
    _ in
    return true
}

原始代码出现问题:

  • filter返回一个数组。如果你没有抓住它,没有任何有用的事情发生。请注意,我已经在另一个变量中捕获了它;你也可以重新分配原始变量。

  • 如果将参数传递给匿名函数,则必须捕获它。您可以无名地捕获它,如此处,或使用名称,或$0,但您不能完全忽略它;你必须承认它。这就是我的_ in所做的。

答案 1 :(得分:0)

您必须为过滤器提供索引:

arr.filter({
    n in true
})