当我学习编程和scala任务时,我崩溃了
错误码是需要的类类型,但发现Boolcase类trueool扩展Bool
我试了很多方法,但就是无法匹配
sealed trait Bool
case class True[Bool]() extends Bool
case class False[Bool]() extends Bool
case class And[Bool](elem1: Bool ,elem2: Bool) extends Bool
case class Or[Bool](elem1: Bool, elem2: Bool) extends Bool
case class Neg[Bool](elem1: Bool) extends Bool
case class Imply[Bool](elem1: Bool, elem2: Bool) extends Bool
def formula(fma: Bool): Boolean = fma match {
// use recursion function and make consist of logical operation Neg, Or, And, Imply
case True() => true
case False() => false
case And(elem1, elem2) => if(formula(elem1) && formula(elem2)){
return true
}else{
return false
}
case Or(elem1, elem2) => if(formula(elem1) || formula(elem2)){
return true
}else{
return false
}
case Neg(elem1) => if( formula(elem1) ){
return false
}else{
return true
}
case Imply(elem1, elem2) => if(formula(elem1)){
if(formula(elem2)){
return true
}else{
return false
}
}else{
return false
}
}
println("** p10 **")
val fma = Imply(And(True, Or(True, False)), False)
println(formula(fma))
}
case class True[Bool]() extends Bool
我不认为这是你想要的。您引入一个类型参数Bool
,它与您的Bool
特征完全无关。
不能扩展(泛型)类型参数。这相当于:
case class True[B]() extends B