Eclipseでscalaワークシートで何かを試しています。これは出力を表示していないため、エラーまたは警告も表示されません。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}
}
}
は、多分あなたはエラーを見ていませんか?私はこのエラーを受け取りました。エラー:不正な継承を密封されたクラスのストリームから取得しました。(あなたがアーカイブしようとしていることを記述していないので、回答を与える方法がわかりません) – Ossip
メソッドconsを定義しようとしていますストリームと要素hdを生成し、要素をストリームの先頭にします。 – Rpant
あなたの解決策は本当に質問に答えません。 Scalaワークシートが実際に動作していない場合は、エディタ内のコードを変更しても効果はありません。あなたはワークシートを修正するために何をしましたか?実際にワークシートが正しく機能していれば、質問のタイトルを修正する必要があります。壊れたワークシートを修正するための助けを求めている人は、あなたの質問/回答が参考になりますか? – jwvh