根据复制、校验、隐私与查找要求审查这段生成的发票模型。
返回独立折扣后的发票且不改变原件;只接受 0 到 100 的百分比;绝不记录客户姓名;汇总指定 SKU 时不得为每个 SKU 重新线性扫描。
swift
final class LineItem {
let sku: String
var cents: Int
init(sku: String, cents: Int) { self.sku = sku; self.cents = cents }
}
struct Invoice {
let customerName: String
var items: [LineItem]
func discounted(percent: Int) -> Invoice {
let copy = self
for item in copy.items {
item.cents -= item.cents * percent / 100
}
print("discounted", customerName)
return copy
}
func total(for skus: [String]) -> Int {
skus.reduce(0) { sum, sku in
sum + (items.first { $0.sku == sku }?.cents ?? 0)
}
}
}
生成代码仅作示例,不代表任何特定模型