Лучший синтаксис для перебора значений
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.04.06 23:10
Оценка: :)
Хочется услышать мнение народа о том как бы он хотел видеть паттерн перебора значений из некоторого диапазона.

Например, в С/С++ для этого используется императивный стиль:
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>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.