【发布时间】:2017-10-07 05:17:48
【问题描述】:
我在 eclipse 的 scala 工作表中尝试了一些东西。这没有显示任何输出,也没有显示任何错误或警告。
object stream {
println("Welcome to the Scala worksheet")
def cons[T](hd: T, t1: => Stream[T]): Stream[T] = new Stream[T] {
def head = hd
private var t1Opt: Option[Stream[T]] = None
def tail: Stream[T] = t1Opt match {
case Some(x) => x
case None => t1Opt = Some(t1); tail
}
}
def streamIncrementedby2(x: Int): Stream[Int] = x #:: streamIncrementedby2(x + 2)
val x = this.cons(-1, this.streamIncrementedby2(5))
println(x.head)
}
我正在尝试 courera odersky 课程中的示例:scala 功能设计 week3 视频。有趣的是,在上面的例子中,如果我删除第一个 println 语句下面的所有内容,我会看到一个评估的输出。
******** 更新******** 为了帮助其他读者,我发布了上述程序的更正版本,受到答案的启发。
def cons[T](hd: T, t1: => Stream[T]) = new Stream[T] {
override def head = hd
override def isEmpty = false
private[ this ] var t1Opt: Option[Stream[T]] = None
def tailDefined: Boolean = true
override def tail: Stream[T] = t1Opt match {
case Some(x) => x
case None => {t1Opt = Some(t1); tail}
}
}
【问题讨论】:
-
也许您没有看到错误?我收到此错误
error: illegal inheritance from sealed class Stream(您没有描述您要归档的内容,所以我不确定如何给出答案) -
我正在尝试定义一个方法 cons,它接受一个流和一个元素 hd 并使元素成为流的头部。
-
您的解决方案并没有真正回答问题。如果 Scala 工作表真的不起作用,那么在编辑器中修改代码应该不会有任何效果。你做了什么来修复工作表?如果工作表实际上工作正常,那么也许您应该更正问题的标题。寻求帮助以修复损坏的工作表的人会发现您的问题/答案有帮助吗?
-
我编辑了问题标题。当我发布问题时,我实际上觉得工作表有些问题,因为我在 eclipse 的任何地方都看不到任何编译错误,只是工作表没有显示任何输出。
标签: scala scala-streams