首页 > 解决方案 > 访问重复 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"))

我整天都在谷歌上搜索,但找不到解决办法。我将不胜感激任何帮助。谢谢你。

标签: scalafunction

解决方案


因此,您将两种看似相似但实际上并不相似的东西混合在一起。

拥有一张地图String -> List[Int]显然意味着做gradeMap("John")会给你一个List[Int](即List(10, 30, 60, 78, 90, 45, 33))。

相反,您的Count函数要求提供一个所谓的varargs参数。这意味着您可以向函数传递一个或多个Ints。这与传递一个List[Int].

所以我的建议是将函数签名更改为name: String, i: List[Int].

注意:尝试将函数命名为小写,因为这是 Scala 的默认约定。


推荐阅读