子范围类型

子范围类型是序数或浮点类型(基类型)的取值范围。要定义子范围类型,必须指定其值的限制,即类型的最低值和最高值。例如:

  1. type
  2. Subrange = range[0..5]
  3. PositiveFloat = range[0.0..Inf]
  4. Positive* = range[1..high(int)] # 正如 `system` 里定义的一样

Subrange 是整数的子范围,只能保存 0 到 5 的值。PositiveFloat 定义了包含所有正浮点数的子范围。 NaN 不属于任何浮点类型的子范围。将任何其他值赋值给 Subrange 类型会产生 panic (如果可以在语义分析期间确认,则为静态错误)。 允许将基类型赋值给它的一个子范围类型(反之亦然)。

子范围类型与其基类型具有相同的大小(子范围示例中的 int )。