如何使用split和map方法?

时间:2015-10-13 11:19:17

标签: ios swift

我看到了一个问题: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{}如何运作?

1 个答案:

答案 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]

希望有所帮助!