コンピュータ サイエンスでは、「範囲」という用語は次の 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#の例。
パブリックレコードRange < T > ( T Start 、T End ) 、ここでT : IComparable ;Kotlinの例。
データクラスRange < T : Comparable < T >> ( val start : T , val end : T )PHPの例。
読み取り専用クラスRange < T > { public関数__construct ( public T $start , public T $end , ) {} }Pythonの例。
データクラスからデータクラスをインポート@dataclassクラス範囲[ T ]:開始: T終了: TRustには標準ライブラリに組み込みの範囲構造体がありますstd::ops::Range。[ 5 ] C++std::rangesにもC++20以降にライブラリがあります。[ 6 ]
Rustには..演算子と..=演算子があります。
let heartwarming = "heartwarming!" .to_string ( ); let warm = & heartwarming [ 5 .. 9 ];Zigには..演算子もあります。
// 連続する整数を反復処理するには、範囲構文を使用します。var sum : usize = 0 ; for ( 0 .. 5 ) | i | { sum += i ; }文字列[] items = [ "1" , "2" , "3" , "4" ];文字列[] firstThreeItems = items [ 0 . .2 ];[ 1 .. 4 ] // 出力: [1; 2; 3; 4]for ( i in 1. . 5 ) print ( i )( 1 .. 5 )の場合{印刷}PythonとPHPには範囲演算子はありませんが、range関数はあります。[ 11 ] [ 12 ]