scala - Scala - 有条件地对列表中的元素求和
问题描述
我正在尝试使用列表解决初学者问题,但找不到帮助我使其工作的示例。我得到了一个正整数和负整数列表(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 期望为真,那么我这样解决它的方法是错误的。
对于列表中的任何或所有元素,“超过”是指 <-1000(例如在给定期间超过信用额度)。
解决方案
i.collect{case x if x < 0 => Math.abs(x) + total}
在上面的代码片段中,没有分配回 total
,也许你需要:
val total = i.filter(_ < 0).map(Math.abs).sum
推荐阅读
- python - 找到第 100 个卢卡斯数
- python - 在 tfp 中训练变分贝叶斯神经网络时,如何分别可视化损失中不同项的演变?
- google-app-engine - 在 GAE 中使用自定义域规范化静态站点的 URL
- python - ModuleNotFoundError:'script-name.py' 从另一个调用脚本时
- electron - 电子全屏 - 当屏幕键盘隐藏在 MS Surface 上时,部分屏幕“丢失”
- r - 如何在R中以每年正确的月份顺序重新排列绘图条形图xaxis?
- r - 尝试在 R 中重新排列表格。(我是初学者!)是否有某种“转置”功能?
- java - 在构建阶段将 GraphQL bigint 转换为 Android (Java) 整数
- sql - 查询表中每个可能的日期组合并对值求和
- iframe - Power BI iframe:IE 和 Edge 的问题