变长参数的关键特性
1. 语法规则
scala
def 函数名(参数名: 类型*): 返回类型 = {
// 函数体
}
2. 参数特点
score: Int*表示可以接受0个或多个Int参数- 在函数内部,
score的类型是Seq[Int](序列) - 必须是参数列表的最后一个参数
3. 调用方式
scala
greet("小花") // 0个分数
greet("小明", 80) // 1个分数
greet("小张", 90, 85, 95) // 3个分数
greet("小王", 70, 80, 90, 100) // 4个分数
object Main {
def greet(name: String, score: Int*): Unit = {
// score 是一个序列(Seq[Int])
var total: Double = 0
for (i <- score) {
total += i
}
val avg = if (score.nonEmpty) total / score.length else 0
println(s"${name}, 平均分是: ${avg}")
}
def main(args: Array[String]): Unit = {
// 测试变长参数函数
greet("小花", 90, 100, 98, 100, 60)
greet("小明", 80, 80)
greet("小张", 90)
greet("小李") // 甚至可以没有分数参数
}
}