我希望在调用{$0 > 1}
类时使用简短形式的结束NSIndexSet
:
let indexSet: NSIndexSet = getSomeIndexSet()
let filteredIndexSet = indexSet.indexesPassingTest(){$0 > 1}
但它给了我
无法调用' indicesPassingTest'使用类型'((_) - > _)'
的参数列表
但这有效:indexSet.indexesPassingTest(){(i,s) in i > 1}
虽然类型名称仍然不存在。
这是一个错误还是我错过了什么?
答案 0 :(得分:5)
错误消息说明你做错了什么。传递给块的参数不是两个不同的参数,而是一个单元参数,它是元组。因此,您必须从元组中访问每个元素。
根据Martin R的评论,似乎闭包必须与2个参数匹配。因此,可以使用$ 0或$ 1,或者只使用一个,然后$ 0变为元组。
let filteredIndexSet = indexSet.indexesPassingTest { $0.0 > 20 }
$ 0.0 表示元组中的第一项是索引。