stringtranslate.com

Диапазон (компьютерное программирование)

В информатике термин «диапазон» может относиться к одному из трех понятий:

  1. Возможные значения, которые могут быть сохранены в переменной .
  2. Верхняя и нижняя границы массива .
  3. Альтернатива итератору .

Диапазон переменной

Диапазон переменной задается как набор возможных значений, которые может содержать эта переменная. В случае целого числа определение переменной ограничено только целыми числами, а диапазон будет охватывать все числа в пределах своего диапазона (включая максимум и минимум). Например, диапазон знаковой 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 ; }          

Смотрите также

Ссылки

  1. ^ ab Андрей Александреску (6 мая 2009 г.). "Итераторы должны уйти" (PDF) . BoostCon 2009 . Получено 29 июля 2014 г. .
  2. ^ cppreference
  3. ^ Документация Boost.Range
  4. ^ D Phobos Runtime Library std.range module
  5. ^ "Range in std::ops - Rust". doc.rust-lang.org . Получено 17 октября 2024 г. .