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

以下是视频中的代码片段:

在此处输入图像描述

我是否需要更改代码才能编译?

当我使用创建新的“假”对象时

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

我收到错误:

此行有多个标记 - 应为标识符,但发现“错误”。

我在与“抽象类布尔”相同的类中定义对象。我无法创建“false”类型的新对象,因为 Eclipse IDE 不允许这样做。

4

2 回答 2

6

您的代码(和 Martin 的)定义了一个新的Boolean,即使它是在 Scala 中预定义/内置的。

您遇到的问题是您没有定义一个 newfalse来取代内置的,false并且内置false与您重新定义的Boolean.

于 2013-04-17T15:51:14.957 回答
4

讲座中的代码无法编译,因为truefalse是保留字,不能重新定义。尝试使用TrueandFalse代替。

于 2013-04-17T16:29:39.360 回答