Результат оператора - неиспользованное быстрое снижение - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь использовать функцию уменьшения в Swift.

taken = basket.reduce(into: 0) { (initial, bi) in
            initial + bi.amount() - bi.discount()
        }

Однако я получил ошибку: Result of operator '-' is unused.

1 Ответ

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

Есть два похожих reduce метода: В

func reduce<Result>(into initialResult: Result, _ updateAccumulatingResult: (inout Result, Element) throws -> ()) rethrows -> Result

замыкание обновляет аккумулятор, но не возвращает значение, тогда как в

func reduce<Result>(_ initialResult: Result, _ nextPartialResult: (Result, Element) throws -> Result) rethrows -> Result

закрытие возвращает обновленное накопленное значение.

В вашем случае это должно быть

taken = basket.reduce(into: 0) { (initial, bi) in
        // Update accumulated value:
        initial += bi.amount() - bi.discount()
    }

с использованием первой версии или

taken = basket.reduce(0) { (initial, bi) in
        // Compute and return accumulated value:
        return initial + bi.amount() - bi.discount()
    }

с использованием второй версии.

...