我正在尝试通过制作计算器来学习 Scala。在这个计算器中,我特别有两种方法可以进行解析和计算。我还有两个处理数据的案例类。
“唯一”数据结构只是由一个 operationIndex 组成,它只是两个数字和对它们执行的运算符。我创建了一个名为 numberPair 的案例类,它只包含两个数字,因为我觉得这种方式更容易理解。如果我在这方面错了,请纠正我,如果我应该只使用正常的一对。
scala 编译器抱怨该行
parser(data(element).numbers.number1, data(element).numbers.number2, data(element).operator)
返回 Calculator.OperationIndex。我不明白,它应该返回函数签名指定的双精度值。它还说它需要一个 Int 超过一个 double 。我已经阅读了 scala 文档,但我仍然不确定我哪里出错了。
case class NumberPair(number1: Double, number2: Double)
case class OperationIndex(numbers: NumberPair, operator: String)
def parser(number1: Double, number2: Double, operator: String): Double = {
val result = operator match {
case "+" => number1 + number2
case "-" => number1 - number2
case "/" => number1 / number2
case "*" => number1 * number2
}
result
}
def computeValue(data: List[OperationIndex]): Double = {
data.foldLeft(0.0) {
(acc: Double, element: OperationIndex) =>
acc + parser(data(element).numbers.number1, data(element).numbers.number2, data(element).operator)
}
}