scala - 访问重复 Int 参数的 HashMap 列表元素
问题描述
我对 Scala 很陌生,正在构建一个计算学生平均成绩的函数。问题是,我创建了一个以学生姓名为键的 HashMap,其成绩值在列表中,如下所示
var gradeMap = Map("John" -> List(10,30,60,78,90,45,33))
该函数的代码是这样的
def Count(name: String, i:Int*) = {
val pass: Double = i.filter(_ >=40).reduceLeft(_+_)/7 //
val fail: Double = i.filter(_ < 40).reduceLeft(_+_)/7
println(s"Student name: $name")
println(s"Pass average: $pass")
println(s"Fail average: $fail")
}
我正在尝试按如下方式调用该函数
Count("John", gradeMap("John"))
我整天都在谷歌上搜索,但找不到解决办法。我将不胜感激任何帮助。谢谢你。
解决方案
因此,您将两种看似相似但实际上并不相似的东西混合在一起。
拥有一张地图String -> List[Int]
显然意味着做gradeMap("John")
会给你一个List[Int]
(即List(10, 30, 60, 78, 90, 45, 33)
)。
相反,您的Count
函数要求提供一个所谓的varargs
参数。这意味着您可以向函数传递一个或多个Int
s。这与传递一个List[Int]
.
所以我的建议是将函数签名更改为name: String, i: List[Int]
.
注意:尝试将函数命名为小写,因为这是 Scala 的默认约定。
推荐阅读
- javascript - nodejs axios JSON与同名对象
- android - 带有socketio的cordova生成的android应用程序向服务器发送消息但无法接收消息
- css - 多个:not()的CSS一切选择器问题
- mysql - 在谷歌云 sql 中导入 CSV 文件只显示 1 行
- python - 如何在 django 中注册查找?
- python - Python中检测对象ID被鼠标点击的最佳方法是什么?
- c# - 使用 C#/Android 应用客户端远程访问 SQL Server
- flutter - Flutter 将 Future List 设置为 null
- java - 为什么 JPA 2.2 将 java.util.Date 存储为 null
- amazon-web-services - 您在该地区没有任何实例