- если у вас есть один и тот же товар дважды, покупатель получит 50 Скидка %.
- если у вас есть один и тот же товар 3 раза, клиент получит 1 товар бесплатно. Обычно при покупке 2 получают 1 бесплатно.
[
Basket(productName: "Apple", productPrice: 1, productQuantity: 1),
Basket(productName: "Banana", productPrice: 2, productQuantity: 3),
Basket(productName: "Kiwi", productPrice: 3, productQuantity: 2),
]
Отдача выше корзины покупок...
Фрукты Название цены
Яблоко * 1 = 1
Банан * 3 = 6
Киви * 2 = 6
Общая сумма. = 13 ..
где общая сумма должна быть 8. Я видел пример возврата общей суммы с использованием функции reduce, где я могу вернуть общую сумму, но я не уверен, как я могу этого добиться.
Код, который я написал, но он возвращает пустой..
struct Basket {
var productName: String
var productPrice: Int
var productQuantity: Int
}
class ShoppingCart {
var result: [Basket] = []
var productTotal: Double = 0
func calculateDiscountOfBasket(basket: [Basket]) -> Double {
for x in basket {
if let index = result.firstIndex(where: { $0.productName == x.productName }) {
result[index].productQuantity += 1
} else {
result.append(x)
}
}
total(basket: basket)
return productTotal
}
func total(basket: [Basket]) {
productTotal = basket.reduce(0.0, { total , product -> Double in
if product.productQuantity == 3 {
total + Double((product.productQuantity * product.productPrice) - product.productPrice)
}
return productTotal
})
}
}
var productArray = [
Basket(productName: "Apple", productPrice: 1, productQuantity: 1),
Basket(productName: "Banana", productPrice: 2, productQuantity: 3),
Basket(productName: "Kiwi", productPrice: 3, productQuantity: 2),
]
var productClass = ShoppingCart()
let result = productClass.calculateDiscountOfBasket(basket: productArray)
print("Total: \(result)")
Подробнее здесь: https://stackoverflow.com/questions/790 ... l-in-swift