Я хочу использовать короткую форму закрытия {$0 > 1}
в вызовах NSIndexSet
класса:Как правильно использовать короткие Swift замыкания в вызовах классов ObjC
let indexSet: NSIndexSet = getSomeIndexSet()
let filteredIndexSet = indexSet.indexesPassingTest(){$0 > 1}
, но это дает мне
не может ссылаться на ' indexesPassingTest»со списком аргументов типа '((_) -> _)'
, но это работает: indexSet.indexesPassingTest(){(i,s) in i > 1}
хотя типа на mes все еще не существует.
Это ошибка или я что-то упускаю?
Вау! Благодаря! Никогда бы не подумал об этом! И в чем отличие от Array.reduce закрыть комбинацию? –
Вы можете * либо * использовать '$ 0' ** и **' $ 1' (в этом случае '$ 0' является индексом, а' $ 1' является логическим указателем) * или * просто '$ 0' (который затем является кортежем состоящий из индекса и указателя). Сравните https://devforums.apple.com/message/1117149#1117149. «Проблема» заключается в том, что вы не можете «пропустить» неиспользуемые сокращенные аргументы. –
@ Алексей Мартемьянов: Нет никакой разницы. –