Swift中的此数组筛选器调用有什么问题?

Swift中的此数组筛选器调用有什么问题?,swift,Swift,我得到的错误是,“Int”不是()的子类型。我做错了什么?我所读到的一切似乎都表明这应该有效 var arr = [4, 5, 23, 4, 5, 2, 3] arr.filter({ return true }) 原始代码的问题: filter返回一个数组。如果不捕获它,就不会发生任何有用的事情。注意,我在另一个变量中捕获了它;您还可以重新分配给原始变量 如果将参数传递到匿名函数中,则必须捕获它。您可以匿名捕获它,如此处,或使用名称,或作为$0,但您不能完全忽略它;你必须承认这一点

我得到的错误是,
“Int”不是()
的子类型。我做错了什么?我所读到的一切似乎都表明这应该有效

var arr = [4, 5, 23, 4, 5, 2, 3]
arr.filter({
    return true
})
原始代码的问题:

  • filter
    返回一个数组。如果不捕获它,就不会发生任何有用的事情。注意,我在另一个变量中捕获了它;您还可以重新分配给原始变量

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


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

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

“我在”有什么作用?@DougSmith给你的飞机降温,我还没写完。好的,现在我有了。@DougSmith我刚刚发布了一篇Swift教程;这是关于匿名函数的一节:特别是以“但请注意,如果匿名函数采用参数,您必须以某种方式使用它们”开头的一段。如果您尚未完成编写,为什么要提交它?感谢链接和洞察力,这帮了大忙。这是对的。它只是没有我最终想要的那么完美。:)我想这和你提交评论然后回去编辑的原因是一样的。。。嗯??
arr.filter({
    n in true
})