В информатике термин «диапазон» может относиться к одному из трех понятий:
Диапазон переменной задается как набор возможных значений, которые может содержать эта переменная. В случае целого числа определение переменной ограничено только целыми числами, а диапазон будет охватывать все числа в пределах своего диапазона (включая максимум и минимум). Например, диапазон знаковой 16 -битной целой переменной — это все целые числа от −32 768 до +32 767.
Когда массив численно индексирован, его диапазон — это верхняя и нижняя границы массива. В зависимости от среды, возникнет предупреждение, фатальное исключение или непредсказуемое поведение, если программа попытается получить доступ к элементу массива, который находится за пределами диапазона. В некоторых языках программирования , таких как C , массивы имеют фиксированную нижнюю границу (ноль) и будут содержать данные в каждой позиции до верхней границы (поэтому массив с 5 элементами будет иметь диапазон от 0 до 4). В других, таких как PHP , массив может иметь дыры, где не определен ни один элемент, и поэтому массив с диапазоном от 0 до 4 будет иметь до 5 элементов (и минимум 2).
Другое значение range в информатике — альтернатива iterator . При использовании в этом смысле range определяется как «пара begin/end итераторов, упакованных вместе». [1] Утверждается [1] , что «диапазоны являются высшей абстракцией» (по сравнению с итераторами) по нескольким причинам, включая лучшую безопасность.
В частности, такие диапазоны поддерживаются в C++20 , [2] библиотеках Boost C++ [3] и стандартной библиотеке D. [4]
Тип данных для диапазонов может быть реализован с использованием дженериков .
Пример на C# .
Диапазон публичной записи <T> ( T Start , T End ) , где T : IComparable ;
Пример на Котлине .
класс данных Диапазон < T : Сопоставимый < T >> ( начало значения : T , конец значения : T )
Пример на PHP .
класс только для чтения Диапазон < T > { public function __construct ( public T $start , public T $end , ) {} }
Пример на Python .
из классов данных импортировать класс данных@dataclass класс Диапазон [ T ]: начало : T конец : T
В стандартной библиотеке Rust есть встроенная структура диапазона в std::ops::Range . [5]
В Rust есть операторы .. и ..= .
пусть согревающий = "согревающий!" . to_string (); пусть теплый = & согревающий [ 5 .. 9 ];
В Zig также есть оператор ..
// Для итерации по последовательным целым числам используйте синтаксис диапазона. var sum : usize = 0 ; for ( 0 .. 5 ) | i | { sum += i ; }