gpt4 book ai didi

string - 在 Swift 中将字符串拆分为数组

转载 作者:搜寻专家 更新时间:2023-11-01 07:33:35 24 4
gpt4 key购买 nike

我正在尝试编写我的第一个 Swift 程序,我知道这个问题之前已经被问过,但是使用 split 的答案对我不起作用。我正在使用 Xcode 6.4 和 Swift 1.2。

我有一个名为 line 的字符串。

如果我写

 let inputs = split(line) {$0 = " "} 

Swift: Split a String into an array 所建议,我收到错误消息“无法使用类型为 (String, ()->) 的参数列表调用‘split’”

如果我写

let inputs = split(line, {find(" ",$0)  != nil}, allowEmptySlices: false) 

split now complains about missing "isSeparator" 所建议,我收到错误消息,“调用中缺少参数‘isSeparator’的参数。”

如果我跳到拆分的定义,我发现

func split<S : Sliceable, R : BooleanType>(elements: S, maxSplit: Int = default, allowEmptySlices: Bool = default, #isSeparator: @noescape (S.Generator.Element) -> R) -> [S.SubSlice]

我不明白最后一个参数的类型是什么,这可能是我问题的根源。你能告诉我应该如何调用 split,更好的是你能解释一下参数类型是什么吗?为什么类型不是简单的 (S)->R?我正在从逐行读取文件的生成器中获取行,如果这有什么不同的话。

for line:String in reader! {
let inputs = split(line) {$0 = " "}
...
}

最佳答案

如问题评论中所述,正确的方法是使用 == 运算符而不是 =

类型(S.Generator.Element) -> R) 必须根据split 的定义来解释:

func split<S : Sliceable, R : BooleanType>
(elements: S,
maxSplit: Int = default,
allowEmptySlices: Bool = default,
#isSeparator: @noescape (S.Generator.Element) -> R)
-> [S.SubSlice]

split 的类型是泛型:换句话说,它是一个函数,可以将满足 Sliceable 的泛型类型(或协议(protocol))子类型的任何值作为第一个参数,如 String,返回的结果必须是 BooleanType 的子类型(例如 truefalse,它们是 Bool 的实例)。所以最后一个参数是一个函数,它获取一个类型作为参数,该类型是 SGeneratorElement (例如 Character) 并返回 R 类型的值。而 {$0 == ""} 正是这种类型的谓词,它有一个(隐式)参数($0),并检查它是否等于字符""

关于string - 在 Swift 中将字符串拆分为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31212435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com