Курс по Raku / Функционално, паралелно, реактивно и уеб програмиране / Функционално програмиране / Свиване / Процедурата reduce

Тест — Свиване

Какво отпечатва следната програма?

say (10, 1, 2, 3).reduce(* - *);
14
08
016
0-4

reduce свива списъка отляво надясно, а първият аргумент на блока винаги е резултатът дотук — тук левият операнд на -. Затова се изчислява ((10 - 1) - 2) - 3, тоест 9 - 2 - 3 = 4. Свиване в другата посока — 10 - (1 - (2 - 3)) — би дало 8, а събиране вместо изваждане би дало 16. За разлика от +, изваждането зависи от реда, така че ролите на двата аргумента наистина имат значение.

Навигация в курса

Процедурата reduce   |   Сума на списък