我正在尝试减少一个对象列表,但Scala和我的大脑并没有收敛(或者我正在以一种完全错误的方式思考,哈哈)。我的问题很简单,但无论如何我无法找到解决方案。
错误如下所示:
type mismatch;
found : Double
required: models.Transaction
def accountBalance(account: String): Double = {
val accountTransactionList = Transaction.accountBalance(account)
accountTransactionList.reduce {
(transactionA, transactionB) => transactionA.amount + transactionB.amount
}
0.0
}
Transaction.accountBalance(account)和我的对象事务:
object Transaction {
var accountTransactions = Map[String, List[Transaction]]()
def accountBalance(account: String): List[Transaction] = accountTransactions.getOrElse(account, List[Transaction]())
}
我正在返回0.0只是因为代码编译,但为什么scala期望我的类模型。事务?
谢谢!
答案 0 :(得分:1)
考虑reduce()
的定义。
def reduce[A1 >: A](op: (A1, A1) ⇒ A1): A1
请注意,所有类型都必须匹配。该集合包含A1
类型的元素,最终结果为类型A1
。您尝试减少accountTransactionList
似乎不符合此要求。
reduceLeft()
和reduceRight()
稍微灵活一些,但A
和B
类型仍然必须相关。
def reduceLeft[B >: A](op: (B, A) ⇒ B): B