5

coursera の Scala courers から取得したいくつかの scala コードを使用しています。

package src.functional.week4

abstract class Boolean {

  def ifThenElse[T](t: => T, e: => T): T

  def && (x: => Boolean): Boolean = ifThenElse(x, false)

}

この行 def && (x: => Boolean): Boolean = ifThenElse(x, false)は、このコンパイル時エラーを示します:

型の不一致; 見つかった: scala.Boolean(false) 必須: src.functional.week4.Boolean

ビデオのコード スニペットは次のとおりです。

ここに画像の説明を入力

コンパイルするためにコードを変更する必要がありますか?

を使用して新しい「false」オブジェクトを作成すると

  object false extends Boolean {
      def ifThenElse[T](t: => T, e: => t) = e
  }

エラーが表示されます:

この行に複数のマーカー - 識別子が必要ですが、'false' が見つかりました。

「抽象クラスブール」と同じクラス内でオブジェクトを定義しています。Eclipse IDE では許可されていないため、「false」タイプの新しいオブジェクトを作成できません。

4

2 に答える 2

6

あなたのコード (および Martin のコード) は、BooleanScala で事前定義/組み込みされているにもかかわらず、 new を定義しています。

あなたが遭遇している問題はfalse、ビルトインに取って代わる新しいを定義していないことfalseと、ビルトインfalseが再定義されたと互換性がないことBooleanです。

于 2013-04-17T15:51:14.957 に答える
4

trueandfalseは予約語であり、再定義できないため、講義のコードはコンパイルされません。代わりにTrueandを使用してみてください。False

于 2013-04-17T16:29:39.360 に答える