Подтвердить что ты не робот

Split теперь жалуется на отсутствие "isSeparator"

После последнего обновления Swift 1.2 я не могу понять, как разбить строку текста на слова. Я использовал это:

let bits = split(value!, { $0 == " "}, maxSplit: Int.max, allowEmptySlices: false)

Но это больше не работает, потому что...

Cannot invoke 'split' with an argument list of type '(String, (_) -> _, maxSplit: Int, allowEmptySlices: Bool)'

Уммм, хорошо, хотя я мог бы продолжать сборку? Хорошо, пусть попробует...

let bits = split(value!, { $0 == " "})

Хорошо, что и каждая другая версия, о которой я могу думать, заканчивается:

Missing argument for parameter 'isSeparator' in call

Позвольте послушать его для бета-тестирования новых языков программирования! Ура!

Кто-нибудь знает правильный секретный соус для 1.2?

4b9b3361

Ответ 1

Кажется, что порядок параметров изменился в Swift 1.2:

let bits = split(value!, maxSplit: Int.max, allowEmptySlices: false,
                 isSeparator: { $0 == " "})

или, используя значения по умолчанию:

let bits = split(value!, isSeparator: { $0 == " "})

Предикат теперь является последним параметром и требует внешнего имя параметра isSeparator, поскольку ему предшествуют необязательные параметры.

Преимущество этого изменения заключается в том, что вы можете использовать трейлинг-закрытие Синтаксис:

let bits = split(value!, maxSplit: Int.max, allowEmptySlices: false) { $0 == " " }

или

let bits = split(value!) { $0 == " " }