Scala Booleans:代码片段

时间:2013-04-17 15:39:03

标签: scala

我正在使用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)给出了这个编译时错误:

  

类型不匹配; found:scala.Boolean(false)required:   src.functional.week4.Boolean

以下是视频中的代码段:

enter image description here

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

当我使用

创建新的'false'对象时
  object false extends Boolean {
      def ifThenElse[T](t: => T, e: => t) = e
  }

我收到错误:

  

此行有多个标记      - 预期的标识符,但找到'false'。

我在与'abstract class Boolean'相同的类中定义对象。我无法创建类型为'false'的新对象,因为Eclipse IDE不允许这样做。

2 个答案:

答案 0 :(得分:6)

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

您遇到的问题是,您尚未定义新的false来取代内置的false,而内置的false与您的内容不兼容定义Boolean

答案 1 :(得分:4)

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