2017-04-14 50 views
0

我有一個問題。我正在測試prefix(while:)的使用情況並收到不期望的結果。prefix(while:)之後的元素數缺失一個元素。從代碼,可以看到,使用具有名稱結構前綴的Oleg是5,但prefix(while:)後它返回4.Swift序列前綴(while :)不是所有元素都返回

實施例:

struct User { 
    let name: String 
} 

let users = [User(name : "Oleg 1"),User(name : "Oleg 2"),User(name : "Oleg 3"),User(name : "Oleg 4"),User(name : "Igor 1"),User(name : "Oleg 5"),User(name : "Max 1")] 


print(users.prefix { $0.name.hasPrefix("Oleg") }.count) //4 

回答

3

從文檔的Array prefix方法:

返回包含初始元素的子序列,直到謂詞返回false並跳過其餘元素。

當代碼獲取到「伊戈爾1」的實例,prefix停止和返回第一子範圍給人4.

結果不要混淆Array prefix方法和String hasPrefix方法。他們被用於兩個完全不同的事情。可能要使用filter

print(users.filter { $0.name.hasPrefix("Oleg") }.count) // 5 
+0

我真的很想念這部分。感謝幫助。 –

相關問題