Сообщение 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>Кроме того, диапазоны не только для итерирования используются.
Для чего ещё?
Конечно можно с помощью функции проверить лежит ли число в этом диапазоне и шаг тут не нужен.
Если всёже заводить два рэнджа и с шагом и без. Потом туда-сюда его конвертировать придётся.
* В этом примере открытость/закрытость границ не хранится. Т.е: [from, to)
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>Кроме того, диапазоны не только для итерирования используются.
Для чего ещё?
Конечно можно с помощью функции проверить лежит ли число в этом диапазоне и шаг тут не нужен.
Если всёже заводить два рэнджа и с шагом и без. Потом туда-сюда его конвертировать придётся.
* В этом примере открытость/закрытость границ не хранится. Т.е: [from, to)
** минус мину -- line comment
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