根据任务要求审查这段生成的集合扩展。
添加可复用的客户列表操作:保留首次出现顺序;索引无效时返回 nil;不暴露邮箱地址;在含大量重复项的长列表中保持高效。
swift
struct Customer {
let id: Int
let email: String
}
extension Array where Element == Customer {
var cachedUnique: [Customer] = []
func customer(at index: Int) -> Customer? {
self[index]
}
func uniqueCustomers() -> [Customer] {
var result: [Customer] = []
for customer in self {
if !result.contains(where: { $0.id == customer.id }) {
result.append(customer)
}
}
return result
}
func debugDump() {
for customer in self {
print(customer.email)
}
}
}
生成代码仅作示例,不代表任何特定模型