See <xref linkend="rangetypes"/> for an overview of range types. 範囲型の概要については8.17をご覧ください。
<xref linkend="range-operators-table"/> shows the specialized operators available for range types. <xref linkend="multirange-operators-table"/> shows the specialized operators available for multirange types. In addition to those, the usual comparison operators shown in <xref linkend="functions-comparison-op-table"/> are available for range and multirange types. The comparison operators order first by the range lower bounds, and only if those are equal do they compare the upper bounds. The multirange operators compare each range until one is unequal. This does not usually result in a useful overall ordering, but the operators are provided to allow unique indexes to be constructed on ranges. 表 9.56に、範囲型専用に利用可能な演算子を示します。 表 9.57に、多重範囲(multirange)型専用に利用可能な演算子を示します。 これらに加えて表 9.1で示す通常の比較演算子が範囲型と多重範囲型で利用できます。 この比較演算子は最初に範囲の下限で順序付けし、それが等しい場合にのみ上限を比較します。 多重範囲型の演算子は各範囲を、等しくならなくなるまで比較します。 これは通常有用な全順序付けにはなりませんが、範囲に対して一意インデックスを構成することができる演算子が提供されます。
表9.56 範囲演算子
Operator 演算子 Description 説明 Example(s) 例 |
---|
Does the first range contain the second? 最初の範囲は2番目を含んでいるか?
|
Does the range contain the element? 範囲はその要素を含んでいるか?
|
Is the first range contained by the second? 最初の範囲は2番目に含まれるか?
|
Is the element contained in the range? その要素は範囲に含まれるか?
|
Do the ranges overlap, that is, have any elements in common? 範囲は重なり合っているか?すなわち共通の要素があるか?
|
Is the first range strictly left of the second? 最初の範囲は厳密に2番目の左か?
|
Is the first range strictly right of the second? 最初の範囲は厳密に2番目の右か?
|
Does the first range not extend to the right of the second? 最初の範囲は2番目の右を被覆していないか?
|
Does the first range not extend to the left of the second? 最初の範囲は2番目の左を被覆していないか?
|
Are the ranges adjacent? 範囲は隣接しているか?
|
Computes the union of the ranges. The ranges must overlap or be
adjacent, so that the union is a single range (but
see <function>range_merge()</function>).
範囲の和を計算します。範囲は和の結果が単一の範囲になるように、重なり合っているか、隣接していなければなりません。(ただし
|
Computes the intersection of the ranges. 範囲の共通部分を計算します。
|
Computes the difference of the ranges. The second range must not be contained in the first in such a way that the difference would not be a single range. 範囲の差を計算します。 差が単一の範囲にならないように、2番目の範囲は最初の範囲に含まれていてはいけません。
|
表9.57 多重範囲演算子
Operator 演算子 Description 説明 Example(s) 例 |
---|
Does the first multirange contain the second? 最初の多重範囲は2番目を含んでいるか?
|
Does the multirange contain the range? 多重範囲は範囲を含んでいるか?
|
Does the multirange contain the element? 多重範囲は要素を含んでいるか?
|
Does the range contain the multirange? 範囲は多重範囲を含んでいるか?
|
Is the first multirange contained by the second? 最初の多重範囲は2番目に含まれているか?
|
Is the multirange contained by the range? 多重範囲は範囲に含まれているか?
|
Is the range contained by the multirange? 範囲は多重範囲に含まれているか?
|
Is the element contained by the multirange? 要素は多重範囲に含まれているか?
|
Do the multiranges overlap, that is, have any elements in common? 多重範囲は重なっているか?すなわち、共通に持つ要素があるか?
|
Does the multirange overlap the range? 多重範囲は範囲と重なり合うか?
|
Does the range overlap the multirange? 範囲は多重範囲と重なり合うか?
|
Is the first multirange strictly left of the second? 最初の多重範囲は厳密に2番目の左か?
|
Is the multirange strictly left of the range? 多重範囲は厳密に範囲の左か?
|
Is the range strictly left of the multirange? 範囲は厳密に多重範囲の左か?
|
Is the first multirange strictly right of the second? 最初の多重範囲は厳密に2番目の右か?
|
Is the multirange strictly right of the range? 多重範囲は厳密に範囲の右か?
|
Is the range strictly right of the multirange? 範囲は厳密に多重範囲の右か?
|
Does the first multirange not extend to the right of the second? 最初の多重範囲は2番目の右を被覆していないか?
|
Does the multirange not extend to the right of the range? 多重範囲は範囲の右を被覆していないか?
|
Does the range not extend to the right of the multirange? 範囲は多重範囲の右を被覆していないか?
|
Does the first multirange not extend to the left of the second? 最初の多重範囲は2番目の左を被覆していないか?
|
Does the multirange not extend to the left of the range? 多重範囲は範囲の左を被覆していないか?
|
Does the range not extend to the left of the multirange? 範囲は多重範囲の左を被覆していないか?
|
Are the multiranges adjacent? それらの多重範囲は隣接しているか?
|
Is the multirange adjacent to the range? 多重範囲は範囲に連接しているか?
|
Is the range adjacent to the multirange? 範囲は多重範囲に連接しているか?
|
Computes the union of the multiranges. The multiranges need not overlap or be adjacent. 多重範囲の和を計算します。 多重範囲は重なり合っている必要も、隣接している必要もありません。
|
Computes the intersection of the multiranges. 多重範囲の間の共通部分を計算します。
|
Computes the difference of the multiranges. 多重範囲の間の差を計算します。
|
The left-of/right-of/adjacent operators always return false when an empty range or multirange is involved; that is, an empty range is not considered to be either before or after any other range. 空の範囲あるいは多重範囲が含まれる場合、「左」「右」「隣接」演算子は常に偽を返します。つまり、空の範囲は他の範囲の前でも後ろでもないと見なされます。
Elsewhere empty ranges and multiranges are treated as the additive identity: anything unioned with an empty value is itself. Anything minus an empty value is itself. An empty multirange has exactly the same points as an empty range. Every range contains the empty range. Every multirange contains as many empty ranges as you like. 他の場所では、空の範囲と多重範囲は加法単位元として扱われます。 空の値との和は自分自身です。 空の値を引いたものは自分自身です。 空の多重範囲は空の範囲と正確に同じ特徴を持ちます。 すべての範囲は空の範囲を含みます。 すべての多重範囲はいくらでも空の範囲を含むことができます。
The range union and difference operators will fail if the resulting range would need to contain two disjoint sub-ranges, as such a range cannot be represented. There are separate operators for union and difference that take multirange parameters and return a multirange, and they do not fail even if their arguments are disjoint. So if you need a union or difference operation for ranges that may be disjoint, you can avoid errors by first casting your ranges to multiranges. 範囲の和と差演算子は、結果の範囲に2つの隣接しない副範囲が含まれる場合には失敗します。 そのような範囲は表現できないからです。 多重範囲引数を取り、多重範囲を返す別の和と差の演算子があり、引数が隣接していなくても失敗しません。 隣接しないかもしれない範囲の和あるいは差の演算が必要なら、まず範囲を多重範囲にキャストすることによってエラーを避けることができます。
<xref linkend="range-functions-table"/> shows the functions available for use with range types. <xref linkend="multirange-functions-table"/> shows the functions available for use with multirange types. 表 9.58に範囲型で利用可能な関数を示します。 表 9.59に多重範囲型で利用可能な関数を示します。
表9.58 範囲関数
表9.59 多重範囲関数
The <function>lower_inc</function>, <function>upper_inc</function>,
<function>lower_inf</function>, and <function>upper_inf</function>
functions all return false for an empty range or multirange.
lower_inc
、upper_inc
、lower_inf
、upper_inf
はすべて空の多重範囲に対して偽を返します。