可以通过指定低和高范围来创建流:
scala> val x = Stream.range(1, 999)
x: scala.collection.immutable.Stream[Int] = Stream(1, ?)
但是如果我尝试以相反的顺序制作一个Stream,我会得到一个空的。
scala> val y = Stream.range(999, 1)
y: scala.collection.immutable.Stream[Int] = Stream()
另外,如果我尝试简单地反转x,那么整个流将变为评估。
scala> x.reverse
res16: scala.collection.immutable.Stream[Int] = Stream(998, 997, 996, 995, 994,
993, 992, 991, 990, 989, 988, 987, 986, 985, 984, 983, 982, 981, 980, ...
那么,如何创建一个具有hi to low
特定范围的流而不先对其进行评估,然后再toStream
呢?
答案 0 :(得分:4)
Stream.range
有一个带有步骤参数的重载:
Stream.range(999, 0, -1)
这将为您提供一个(懒惰)流,从999开始向下延伸到1(包括)