写段Scala复杂的高阶
时间: 2023-11-27 15:05:33 浏览: 83
好的,以下是一个复杂的Scala代码示例,演示如何使用高阶函数和元组对一个包含学生信息的列表进行排序:
```scala
object HigherOrderExample {
def main(args: Array[String]) {
val students = List(("Alice", 23, 3.5), ("Bob", 21, 3.8), ("Charlie", 22, 3.7))
// 使用 sortBy 函数按照 GPA 排序
val sortedByGPA = students.sortBy(student => student._3)
println(sortedByGPA) // 输出: List((Alice,23,3.5), (Charlie,22,3.7), (Bob,21,3.8))
// 使用 filter 函数过滤年龄大于 21 岁的学生
val filteredByAge = students.filter(student => student._2 > 21)
println(filteredByAge) // 输出: List((Alice,23,3.5), (Charlie,22,3.7))
// 使用 reduce 函数求 GPA 的平均值
val avgGPA = students.map(student => student._3).reduce((x, y) => x + y) / students.length
println(avgGPA) // 输出: 3.6666666666666665
}
}
```
在上面的代码中,我们首先定义了一个包含学生信息的列表 `students`,其中每个元素都是一个元组,包含学生姓名、年龄和 GPA。然后我们使用三个不同的高阶函数对 `students` 进行处理:
- 使用 `sortBy` 函数按照 GPA 对学生进行排序,得到一个新的列表 `sortedByGPA`。
- 使用 `filter` 函数过滤年龄大于 21 岁的学生,得到一个新的列表 `filteredByAge`。
- 使用 `map` 和 `reduce` 函数求出学生的 GPA 平均值,得到一个浮点数 `avgGPA`。
在这个示例中,我们使用了元组来表示学生的信息,同时使用了不同的高阶函数对学生列表进行处理,这些操作均涉及到了多个参数和函数嵌套,因此可以被认为是一段相对复杂的Scala高阶函数代码。
阅读全文