String又是一个集合类型了

2020-03-20  本文已影响0人  醉看红尘这场梦

首先是SE-0163,这是基于Swift 4 String Manifesto的一份具体修改提议,其中有些内容还在积极讨论中,但一个可确定的部分,就是继Swift 2之后,在Swift 4里,String重新变成了一个Collection类型。对此,官方的详细解释,在这里

String变成一个集合之后,我们之前对Collection所有的操作,就都可以直接用来处理String了,例如:

let greeting = "Hello Mars"

 // 10
greeting.count

// 5
let spaceIndex = greeting.index(of: " ")!

// Hello
let substring = greeting[..<spaceIndex]

// H
// e
// l
// ..
greeting.forEach { print($0) }

SE-0168 Multi-Line String Literals

这个改进最简单直观,我们可以用一对三个单引号(这叫做triple quotes)来包含任何行字符串内容,这样,无论字符串包含任何值(包括引号、各种空格、换行符等),都会原封不动的保留下来,当我们要向用户展示一段JSON或XML时,就显得格外方便了:

let xmlInfo = """
<?xml version="1.0"?>
<episode id="1">
    <title>String is a collection again</title>
    <author>11</author>
    <created_at>2017-05-18</created_at>
</episode>
"""

let jsonInfo = """
{
    "episode": {
        "title": "String is a collection",
        "author": "11",
        "created_at": "2017-05-18"
    }
}
"""

当我们在控制台打印这两个变量时:

print(xmlInfo)
print(jsonInfo)

可以在下图中看到,这两个字符串都完整保留了我们在定义时的格式:

string-is-a-collection-agagin
上一篇下一篇

猜你喜欢

热点阅读