变长参数

26 阅读1分钟

变长参数的关键特性

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("小李")  // 甚至可以没有分数参数
    }
}