Вопрос
Википедия говорит это Reverse().Aggregate(initval, func)
правая складка. Это звучит так, как будто это не так, а скорее дешевый полицейский ... может кто -нибудь прокомментировать этот вопрос? Есть ли у C# правильные складки?
Решение
Принять определение правой сгиба и проверьте, Reverse().Aggregate(initval, func)
вписывается в это.
Определение:
Объединение первого элемента с результатами объединения остальных называется правой складкой
Так что, если вы хотите рассчитать сумму (1, 2, 3)
. Анкет Если вы просто Aggregate
оценка будет (1 + 2) + 3
. Анкет если ты Reverse().Aggregate
тогда это будет (3 + 2) + 1
, что идеально соответствует определению.
Вопрос может быть в том, эффективно ли, потому что Reverse
это дорогостоящая работа, но функционально это идеальная правая складка.
Другие советы
Aggregate
это настоящая левая складка. Агрегация обратного списка имеет ту же семантику, что и полная (не-ленивая) правая складка в любом обратимом списке.