我看到了一个问题:Swift: Split a String into an array
还有一些我不理解的代码:
let fullName = "First Last"
let fullNameArr = split(fullName.characters){$0 == " "}.map{String($0)}
fullNameArr[0] // First
fullNameArr[1] // Last
split()
和map{}
如何运作?
答案 0 :(得分:3)
您正在使用在Xcode7中无法使用的语法。正确的语法应该是
let fullNameArr = fullName.characters.split{$0 == " "}.map(String.init)
让它脱离困境让我们把这条线分成两部分:
拆分需要
表示字符串扩展的字符集合 字形簇
- 来自Xcode docs
和一个带字符并返回Bool的闭包 - 如果该字符可以被视为分隔符,则为true。
如果这种语法令人困惑,请尝试阅读:
fullNameArr = fullName.characters.split({
character in
return character == " "
})
现在, split 会返回一个SubSequence对象数组。您想将它们转换回字符串,以便能够很好地打印它们。因此,一种方法是创建一个for循环迭代所有split的结果并将它们转换为字符串,然后附加到结果数组,或使用 map 方法执行相同操作。
如果仔细观察第一行,就可以在数组上执行map并传递一个闭包,该闭包对数组的每个元素执行某些操作并将其写回。
一个简单的例子如何运作
let exampleArray = [1, 2, 3]
print(exampleArray.map {$0 * 3})
// prints [3, 6, 9]
希望有所帮助!