Информация об изменениях

Сообщение Re[4]: [ksi] Синтаксис диапазонов -- тип range от 02.02.2022 13:55

Изменено 02.02.2022 13:58 Sm0ke

Re[4]: [ksi] Синтаксис диапазонов -- тип range
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, Sm0ke, Вы писали:


W>>>А зачем тут шаг?

S>>Чтобы сразу указать его и итерировать в цикле. Или можно взять слайс от массива, тоже с шагом.

W>Так это атрибут цикла или слайса, а не диапазона как такового.


Поинт в том, что диапазон можно присвоить переменной и подставить потом её для слайса, или в качестве параметра цикла.
Просто не хочу делать два вида диапазона: с шагом и без.

S>>Можно явно указать и минус бесконечность, но итерировать тогда нельзя будет.


W>Отчего же нельзя? В сторону бесконечности — можно.


Начальная граница должна быть конечна. Последняя — любая.

W>Кроме того, диапазоны не только для итерирования используются.


Для чего ещё?
Конечно можно с помощью функции проверить лежит ли число в этом диапазоне и шаг тут не нужен.

Если всёже заводить два рэнджа и с шагом и без. Потом туда-сюда его конвертировать придётся.
$range ( from = 0, to )
$range_step : $range ( step )

r0 = $range{%to:10} -- [0, 10)
r2 = $range_step[4 8 2] -- [4, 8) step 2
r1 = r2.$range #clone # -- берём базовый класс который без шага
r3 = $range_step{$range:r1 %step:1} -- тут не надо писать (r1 #clone #) оно само

#contains $range* range value ( ret = /* вычисления */ ) -- функция contains перегружена для типа range и его потомков, т.е. может принимать и range_step

r2 #contains 5 #write_ln # -- true

* В этом примере открытость/закрытость границ не хранится. Т.е: [from, to)
Re[4]: [ksi] Синтаксис диапазонов -- тип range
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, Sm0ke, Вы писали:


W>>>А зачем тут шаг?

S>>Чтобы сразу указать его и итерировать в цикле. Или можно взять слайс от массива, тоже с шагом.

W>Так это атрибут цикла или слайса, а не диапазона как такового.


Поинт в том, что диапазон можно присвоить переменной и подставить потом её для слайса, или в качестве параметра цикла.
Просто не хочу делать два вида диапазона: с шагом и без.

S>>Можно явно указать и минус бесконечность, но итерировать тогда нельзя будет.


W>Отчего же нельзя? В сторону бесконечности — можно.


Начальная граница должна быть конечна. Последняя — любая.

W>Кроме того, диапазоны не только для итерирования используются.


Для чего ещё?
Конечно можно с помощью функции проверить лежит ли число в этом диапазоне и шаг тут не нужен.

Если всёже заводить два рэнджа и с шагом и без. Потом туда-сюда его конвертировать придётся.
$range ( from = 0, to )
$range_step : $range ( step )

r0 = $range{%to:10} -- [0, 10)
r2 = $range_step[4 8 2] -- [4, 8) step 2
r1 = r2.$range #clone # -- берём базовый класс который без шага
r3 = $range_step{$range:r1 %step:1} -- тут не надо писать (r1 #clone #) оно само

#contains $range* range value ( ret = /* вычисления */ ) -- функция contains перегружена для типа range и его потомков, т.е. может принимать и range_step

r2 #contains 5 #write_ln # -- true

* В этом примере открытость/закрытость границ не хранится. Т.е: [from, to)
** минус мину -- line comment