Scala:延迟流导致错误:正向引用

时间:2018-11-02 10:37:38

标签: scala functional-programming stream

我创建了一个Stream对象,如下所示:

object Stream {
  def cons[A](hd: => A, tl: => Stream[A]): Stream[A] = {
  lazy val head = hd
  lazy val tail = tl
  Cons(() => head, () => tail)
}

def empty[A]: Stream[A] = Empty

}

当我用它创建一个懒惰的流时,我发现在函数内部创建流但声明为实例值时没有错误(我不理解)。

object testStream {
  val myStream: Stream[Int] = Stream.cons(72, myStream) // OK

  def doStuff: Unit = 
    val xStream: Stream[String] = Stream.cons(" start ", xStream) // Error: forward reference extends over definition

}

为什么会发生此错误,这是由于在函数中对值进行了十进制表示而导致的结果是对其求值,而不是延迟解释吗?

0 个答案:

没有答案