我正在尝试解决列表的初学者问题,但是找不到帮助我使其工作的示例。给我一个正负整数列表(AccountHistory),我需要检查此列表中的负整数是否曾经超过-1000。我希望我的代码可以与像这样的新引入的辅助函数一起工作:
def checkAccount(account: AccountHistory): Boolean = {
def helper(i: AccountHistory): Int = {
var total = 0
i.collect{case x if x < 0 => Math.abs(x) + total}
return total
}
if (helper(account) >1000) true else false
}
但是它不起作用。请帮助我以错误的方式找到我的错误或问题。
编辑:预先提供的测试包括
assert(checkAccount(List(10,-5,20)))
assert(!checkAccount(List(-1000,-1)))
因此,如果assert期望为true,则我的方法无法像这样解决它。
对于列表中的任何或所有元素,“超过”是指<-1000(例如在给定时期内超出信用额度)。
答案 0 :(得分:3)
i.collect{case x if x < 0 => Math.abs(x) + total}
在上述代码段中,不是分配回 total
,也许您需要:
val total = i.filter(_ < 0).map(Math.abs).sum
答案 1 :(得分:2)
我认为这是您应该做的:
def checkAccount(account: AccountHistory): Boolean =
account.forall(_ > -1000)