#list #math #f# #sum #record
Вопрос:
У меня есть приведенная ниже запись о том, сколько товаров было продано в магазине:
type ShopEarnings = { Item: string; Price: int; Quantity: int}
let pencils = { Item= "Pencils"; Price = 2; Quantity = 500 }
let pens = { Item= "Pens"; Price = 5; Quantity = 200 }
let labels = { Item= "Labels"; Price = 3; Quantity = 300 }
let rulers = { Item= "Rulers"; Price = 5; Quantity = 100 }
Я хочу рассчитать общее количество проданных товаров, чтобы я мог напечатать что-то вроде:
printfn "%i items were sold" totalItemsSold
и он выведет
Было продано 1100 наименований
Кроме того, мне не нужно будет вводить элементы для добавления вручную, если их будет 100.
Я пробовал разные подходы, такие как List.sum, но это не сработало. Каков был бы наилучший способ рассчитать общую сумму «Количества»?
Ответ №1:
List.sumBy
сделаю это:
let totalItemsSold =
[pencils; pens; labels; rulers]
|> List.sumBy (fun earnings -> earnings.Quantity)
printfn "%i items were sold" totalItemsSold
Комментарии:
1. Извините, я забыл упомянуть, что не хотел вводить функции вручную, потому что их могло быть 100.
2. Я не совсем понимаю, что вы подразумеваете под «функциями». Вы имеете в виду, что не хотите создавать список записей вручную, как это сделал я? Если у вас есть 100 записей, есть ли они в базе данных? Или у вас действительно есть 100 жестко закодированных записей, каждая из которых привязана к своему собственному имени, как в вашем примере? В любом случае, вам понадобится какой-то способ поместить записи в список или последовательность, чтобы вычислить сумму.
3. На данный момент они будут жестко закодированы, как и 5 выше. Да, я пытаюсь занести это в список.