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

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

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

но это не работает, потому что...

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

уммм, хорошо, хотя я мог бы последний строить? Ладно, давай попробуем...

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

Ну, это и все другие версии, которые я могу придумать, заканчиваются словами:

Missing argument for parameter 'isSeparator' in call

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

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

1 ответов


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

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

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

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

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

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

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

или

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