我正在使用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
以下是视频中的代码段:
我是否需要更改代码才能编译?
当我使用
创建新的'false'对象时 object false extends Boolean {
def ifThenElse[T](t: => T, e: => t) = e
}
我收到错误:
此行有多个标记 - 预期的标识符,但找到'false'。
我在与'abstract class Boolean'相同的类中定义对象。我无法创建类型为'false'的新对象,因为Eclipse IDE不允许这样做。
答案 0 :(得分:6)
您的代码(和Martin的)定义了一个新的Boolean
,即使它是在Scala中预定义/内置的。
您遇到的问题是,您尚未定义新的false
来取代内置的false
,而内置的false
与您的内容不兼容定义Boolean
。
答案 1 :(得分:4)
讲座中的代码无法编译,因为true
和false
是保留字,无法重新定义。请尝试使用True
和False
。