1

我想在对类{$0 > 1}的调用中使用简短的闭包形式:NSIndexSet

let indexSet: NSIndexSet = getSomeIndexSet()
let filteredIndexSet = indexSet.indexesPassingTest(){$0 > 1}

但它给了我

无法使用“((_)-> _)”类型的参数列表调用“indexesPassingTest”

但这有效:indexSet.indexesPassingTest(){(i,s) in i > 1}尽管类型名称仍然不存在。

这是一个错误还是我错过了什么?

4

1 回答 1

5

错误消息说明您做错了什么。传递给块的参数不是两个不同的参数,而是一个元组参数。因此,您必须从元组中访问每个元素。

根据 Martin R 的评论,似乎闭包必须匹配 2 个参数。因此,可以使用 $0 或 $1,或者如果只使用一个,则 $0 变为元组。

let filteredIndexSet = indexSet.indexesPassingTest { $0.0 > 20 }

$0.0表示元组中的第一项,即索引。

于 2015-06-20T13:17:07.410 回答