2017-03-26 34 views

回答

0

我假設你知道一切都在別人的代碼,除了這一行:

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

readLine()讀取用戶輸入並返回。假設用戶輸入爲

Sweeper 12345678 

使用.characters.split(" "),我們使用分隔符分割輸入。什麼是分離器?空間 (」 」)!現在輸入被分成兩部分 - 「Sweeper」和「12345678」。

我們希望兩個拆分部分是字符串,對嗎?字符串更容易操作。目前,拆分部分存儲在String.CharacterView.SubSequence的數組中。我們希望將每個String.CharacterView.SubSequence轉換爲一個字符串。這就是我們使用map的原因。 map將某個函數應用於集合中的所有內容。所以

.map(String.init) 

就像

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

我們現在已經改變了整個採集到的字符串!

0

還有就是在你的代碼錯誤,如下面替換它:

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

替代上面的代碼是:

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

實施例:

var str = "Hello, playground" 

let entry = str.characters.split(separator: " ").map(String.init) 
print(entry) 

現在characters.split與分隔字符分隔符你在上面的情況下給「」(空間)。所以它會生成一個字符數組。並且您需要將它用作字符串,以便您將字符映射到String類型map()