这是一个最小的例子,我可以定义一个函数,通过
def nextInteger(input: Int): Int = input+1
然后我可以将一个惰性整数流定义为
lazy val integers: Stream[Int] = 1 #:: integers map(x=>nextInteger(x))
令我惊讶的是,取这个流的第一个元素是 2 而不是 1
scala> integers
res21: Stream[Int] = Stream(2, ?)
在这个简单的例子中,我可以在整数的定义中使用 0 而不是 1 来实现我想要的结果,但是通常如何设置一个流以使初始值不丢失?就我而言,我正在设置一个迭代算法,并且想知道初始值。
编辑:此外,我从来没有理解导致以下语法失败的设计选择:
scala> (integers take 10 toList) last
res27: Int = 11
scala> integers take 10 toList last
<console>:24: error: not found: value last
integers take 10 toList last
^
我发现用括号括起来很麻烦,有没有我不知道的速记?