Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
swift为什么使用characters.split?为什么map(String.init)用于_Swift_Swift3 - Fatal编程技术网

swift为什么使用characters.split?为什么map(String.init)用于

swift为什么使用characters.split?为什么map(String.init)用于,swift,swift3,Swift,Swift3,//有人能解释一下这段代码吗?“您的代码中有错误,请按如下方式替换它: import Foundation for i in 1 ... n { let entry = readLine()!.characters.split(" ").map(String.init) let name = entry[0] let phone = Int(entry[1])! phoneBook[name] = phone`` } 上述代码的替代方案是: let

//有人能解释一下这段代码吗?“

您的代码中有错误,请按如下方式替换它:

import Foundation

for i in 1 ... n {

    let entry = readLine()!.characters.split(" ").map(String.init)

    let name = entry[0]

    let phone = Int(entry[1])!


    phoneBook[name] = phone``

}
上述代码的替代方案是:

let entry = readLine()!.characters.split(separator: " ").map(String.init)
例如:

let entry = readLine()!.components(separatedBy: " ")

现在
characters.split
使用您在上面的大小写“”(空格)中给出的分隔符拆分字符。因此,它将生成一个字符数组。您需要将其用作字符串,以便将字符映射到
string
type by
map()

我假设您知道代码中除此行以外的所有内容:

var str = "Hello, playground"

let entry = str.characters.split(separator: " ").map(String.init)
print(entry)
readLine()
读取并返回用户输入。假设用户输入是

let entry = readLine()!.characters.split(" ").map(String.init)
使用
.characters.split(“”
),我们使用分隔符拆分输入。这个分离器是什么?空格(“”)!现在,输入分为两部分——“清扫器”和“12345678”

我们希望两个分开的部分是字符串,对吗?字符串更容易操作。当前,分割的部分存储在
String.CharacterView.SubSequence
的数组中。我们希望将每个
String.CharacterView.SubSequence
转换为一个字符串。这就是为什么我们使用
map
<代码>映射将特定功能应用于集合中的所有内容。所以

Sweeper 12345678
就像

.map(String.init)
我们现在已经将整个集合转换为字符串

// this is for demonstration purposes only, not real code
for x in readLine()!.characters.split(" ") {
    String.init(x)
}