swift: функциональное программирование и массивы - PullRequest
0 голосов
/ 05 июля 2018
var data: [[String]] = ...
let pos = data.compactMap { Int($0[posColumn]) }
let neg = data.compactMap { Int($0[negColumn]) }

let sum = ?? { pos + neg }

У меня есть данные CSV, столбец для положительных значений и столбец для отрицательных. Используя data.compactMap, я получаю два массива для обоих. Как я могу получить [Int] для sum с помощью функционального программирования?

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Вы хотите сложить два столбца, чтобы создать третий столбец.

Используйте zip(_:_:) для объединения массивов и map(_:) для их суммирования:

let sum = zip(pos, neg).map(+)

что если мне нужно получить сумму И разделить на некоторое число? Итак, будет 3 массива: pos, neg, tot. (pos + neg) / tot

Поскольку zip работает только с 2 последовательностями, вместо этого вы можете map по индексам одного из ваших массивов:

let result = pos.indices.map { (pos[$0] + neg[$0]) / tot[$0] }
0 голосов
/ 05 июля 2018
let sum = (pos + neg).reduce(0, +)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...