- если у вас есть один и тот же товар дважды, покупатель получит 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 Product {
var productName: String
var productPrice: Int
var productQuantity: Int
}
class ShoppingCart {
var products: [Product] = []
var productTotal: Double = 0
func add(item: Product) -> Double {
if item.productQuantity < 0 {
print("product is emptry ")
} else {
products.append(item)
}
self.calculateTotal()
return productTotal
}
func calculateTotal() {
if let index = products.firstIndex(where: { $0.productQuantity > 2 }) {
let grandtTotal = products.reduce(0.0, { $0 + Double($1.productQuantity * $1.productPrice) })
productTotal = grandtTotal - Double(products.first?.productPrice ?? 0)
} else if let index = products.firstIndex(where: { $0.productQuantity >= 1 }) {
let grandtTotal = products.reduce(0.0, { $0 + Double($1.productQuantity * $1.productPrice) })
productTotal = grandtTotal - Double((products.first?.productPrice ?? 0) / 2)
} else {
productTotal = products.reduce(0.0, { $0 + Double($1.productQuantity * $1.productPrice) })
}
}
}
let singleProduct = Product(productName: "Banana", productPrice: 10, productQuantity: 10)
var shpooingCart = ShoppingCart()
let result = shpooingCart.add(item: singleProduct)
print(result)
Подробнее здесь: https://stackoverflow.com/questions/790 ... l-in-swift