审查生成的发票副本

来自 结构体与类
Swift 6.3.3 高级 6分钟 找出 4处问题

根据复制、校验、隐私与查找要求审查这段生成的发票模型。

返回独立折扣后的发票且不改变原件;只接受 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)
        }
    }
}

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误