Хочется услышать мнение народа о том как бы он хотел видеть паттерн перебора значений из некоторого диапазона.
Например, в С/С++ для этого используется императивный стиль:
for (int i = 0; i < len; i++)
но этот синтаксис слишком громоздок и может приводить к случайным ошибкам (так как императивен).
Во многих ЯП можно увидить синтаксис вроде:
foreach (i in 0..3) // выдает последовательность 0, 1, 2, 3
этот синтаксис хорош, но неудобен когда нужно перебрать значения индекса некой коллекции:
foreach (i in 0..array.Length - 1) // не нравится этот "- 1"
В Руби для таких случаев используется синтаксис:
foreach (i in 0...3) // то есть добавляется третья точка.
Но это не интуитивно и легко путается с вариантом с двумя точками.
В Паскале используется синтаксис:
for i := 0 to 3 step 1 do
он тоже не удобен для перебора значений индексов из коллекций.
Вопрос в том как должен выглядить идеальный синтаксис перебора значений из диапазона на ваш взгляд.
Мне в голову прили следующие варианты:
foreach (x where 0 >= x < 10 step 1) // "step 1" необязательный параметр позволяющий задать шаг отличный от еденицы
Этот вариант позволяет регулировать включение верхней и нижней границы просто заменой знаков > и < на >= и <=.
и
foreach (x from 0 to x < 10)
Этот варинт вроде бы крайне локоничен, но сбивает, то что условие "x < 10" будет истенно и для "x = 0".
В общем, приветствуются любые мысли.
... << RSDN@Home 1.2.0 alpha rev. 637>>