对范围的限制

dvi*_*gal 1 scala scala-collections

我很惊讶.为什么限制实现类型为Range,其大小是否受Int.MaxValue限制?谢谢.

mis*_*tor 5

NumericRange文档中,

NumericRange是一个更通用的Range类,适用于任意类型.必须提供Integral 范围类型的实现.

对于可能的类型工厂包括Range.BigInt,Range.Long,和 Range.BigDecimal.Range.Int存在是为了完整性,但Int基于它 scala.Range应该更高效.

val r1 = new Range(0, 100, 1)
val veryBig = Int.MaxValue.toLong + 1
val r2 = Range.Long(veryBig, veryBig + 100, 1)
assert(r1 sameElements r2.map(_ - veryBig))
Run Code Online (Sandbox Code Playgroud)