Swift: 无法使用'type '(@noescape (Int) throws -> Bool)'的参数列表调用'filter'

4
我遇到了这个错误:
func compactCoords(coords: [Int]) -> [Int]{
    return coords.filter({ (value) -> Bool in
        return value != 0
    })
}

无法使用类型为“(@noescape (Int) throws -> Bool)”的参数列表调用“filter”

谢谢您的帮助!


1
为了能在这里帮助您,我需要更多的上下文。您是如何调用这个函数的?上一次我遇到这个错误时,我尝试将 filter 函数返回的数组应用到一个集合中。因此,也许您之所以会出现这个错误,是因为您调用该函数的方式不正确... - Tony J Stark
Tony Stark谢谢。那帮了我。 :) - Nuno Gonçalves
1个回答

1
你的代码在Xcode 7.1中可以正常工作。你可能不小心尝试在Xcode 6.x中运行此代码?
你可以像这样简化你的函数:
func compactCoords(coords: [Int]) -> [Int] {
    return coords.filter { $0 != 0 }
}

输出:

let coords = [1,2,3,0,4,5,6]
let compactedCoords = compactCoords(coords) // [1, 2, 3, 4, 5, 6]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接