Возможно разработчик вкладывал в это какой-то дополнительный, сакральный смысл, но я для себя сделал сделал следующие выводы:
Range(i,j) и i.To(j) эквивалентны.
Также, эквивалентны Range(j,i,-1) и i.DownTo(j), хотя запись 5.DownTo(10) -
это странно, было бы естественнее 10.DownTo(5) и тут Range(10,5,-1) лучше.
Range не умеет порождать бесконечных последовательностей,
поэтому Step нужен однозначно.
n.Times эквивалентно Range(0,n-1) и просто изящнее выглядит.
Удобно для порождения индексов динамического массива.размера n.
Downto выглядит неестественно, потому что работает неправильно.
Я об этом писал. Надеюсь, исправят. Там работы на 10 секунд.
Всё остальное верно.
Метод Step можно было бы сделать отдельно от типа integer - как Range.
Тогда все методы, порождающие последовательности, были бы в одной куче.
Сакрального смысла я пока не понял.
Может быть, эти методы расширения как-то используются в лямбдах или ещё где-нибудь.
Пока не нашёл им разумного применения.
Может, это в истории c downto параметры не в том порядке? Я уже про другое написал, это тоже только что исправили, там же вроде случай не такой простой:
Вот поэтому я и хотел понять эту конкретную проблему, пока всё не затерялось в исправлениях. Сам когда-то на что-то похожее споткнулся (или мне это только показалось) вот и заинтересовался.
В DownTo надо было нелогично указывать параметры. DownTo - это декремент, поэтому очевидно, что указываем начальное значение, затем DownTo, что указывает нисходящую последовательность и конечное значение. Как в операторе цикла for 10 downto 5 do.
Сейчас исправили, и можно писать аналогично: 10.DownTo(5)