この関数は、算術式を表す文字列を返すことになっています。式を文字列に変換する
import scala.util.parsing.combinator._
object ArithEval extends ArithEvalLike {
def eval (e:Expr):Double = e match {
case Num(a) => a
case Exponent(a,b) => Math.pow(eval(a),eval(b))
case Add(a,b) =>eval(a) + eval(b)
case Sub(a,b) =>eval(a) - eval(b)
case Mul(a,b) =>eval(a) * eval(b)
case Div(a,b) =>eval(a)/eval(b)
}
}
object ArithPrinter extends ArithPrinterLike {
def print (e: Expr): String = e match {
case Num(a) => "a"
case Exponent(a,b) =>print(a).toString + "^" + print(b).toString
case Add(a,b) => print(a).toString + "+" + print(b).toString
case Sub(a,b) => print(a).toString + "-" + print(b).toString
case Mul(a,b) =>print(a).toString + "*" + print(b).toString
case Div(a,b) =>print(a).toString + "/" + print(b).toString
}
}
私のテストのいくつかが失敗しているので、これは正しくないようです。
スカーラ> ArithPrinter.print(ムル(NUM(2.0)、ムル(、テンキー(5.0)(NUM(3.0)を追加)、テンキー(-10.0))):ここで
は、私が実行されたテストは、 )
それはそれは私の間違っているテストまたは関数自体だ場合、私は知らない「のNum」
を見つけることができないと言います。
私は適切なトラックにいますか?
失敗したテストは何ですか?そしてコード全体を投稿できますか? –
失敗したテストコードを送信してください。 – marcospereira
「Num」、「Add」などの定義なしではわかりません。「Numを見つけることができません」と表示されている場合は、おそらく「Num」が定義されていません(またはタイプが間違っている) –