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?
Ответы
Ответ 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 == " " }