2017-04-14 27 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

我真的很想念这部分。感谢帮助。 –

相关问题