Быстрый расчет общей суммы корзины покупокIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Быстрый расчет общей суммы корзины покупок

Сообщение Anonymous »

Как лучше всего рассчитать общую сумму корзины для покупок при условии, что
  • если у вас есть один и тот же товар дважды, покупатель получит 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»