如何递归在scala的情况下类(逻辑函数)



当我学习编程和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

最新更新