拆分现在抱怨失踪"isSeparator"

Mau*_*itz 11 swift

在Swift 1.2的最新升级之后,我无法弄清楚如何将一行文本拆分成单词.我曾经这样做过:

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

但那不再有效,因为......

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

嗯,好吧,即使我可以上次建造?好吧,我们试试......

let bits = split(value!, { $0 == " "})
Run Code Online (Sandbox Code Playgroud)

那个和我能想到的其他版本最终都说:

Missing argument for parameter 'isSeparator' in call
Run Code Online (Sandbox Code Playgroud)

让我们听听它测试新的编程语言!好极了!

谁知道1.2的正确秘诀?

Mar*_*n R 16

似乎Swift 1.2中参数的顺序发生了变化:

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

或者,使用默认值:

let bits = split(value!, isSeparator: { $0 == " "})
Run Code Online (Sandbox Code Playgroud)

谓词现在是最后一个参数,需要外部参数名称,isSeparator因为它前面是可选参数.

此更改的优点是您可以使用尾随闭包语法:

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

要么

let bits = split(value!) { $0 == " " }
Run Code Online (Sandbox Code Playgroud)