scala教程:函数的参数-不定长参数、默认值、带名参数

可变参数

功能相当于 java 的 不定长参数,定义可变参数的函数,在调用函数时,传入的参数是可变的,即:可传入一个参数,也可传入多个参数

语法

def 函数名(变量名:类型 *): 返回类型 = {

}

解释: 在形参类型后面加 *,表示可变参数

例子

object StdFun3 {

  def main(args: Array[String]): Unit = {
    def test(a:Int*): Unit = {
      println(a)
    }
    test(1)
    test(1,2)
  }

}

执行结果:

WrappedArray(1)
WrappedArray(1, 2)

有多个参数时,可变参数放在最后

def main(args: Array[String]): Unit = {
  def addStudent(name:String, likes:String *): Unit ={
    println("姓名:"+name)
    println("爱好:"+likes)
  }
  addStudent("韩梅梅")
  addStudent("lucy","抖音")
  addStudent("李雷","抖音","王者荣耀","原神")
}

执行结果:

姓名:韩梅梅
爱好:WrappedArray()
姓名:lucy
爱好:WrappedArray(抖音)
姓名:李雷
爱好:WrappedArray(抖音, 王者荣耀, 原神)

不在最后会报错

下面会报错:

def main(args: Array[String]): Unit = {
  def test(b:Int*,a:String): Unit = {
    println(a)
    println(b)
  }
}

参数的默认值

  • 定义函数时,可以给 某个参数 指定一个默认值
  • 一般 将常见的值设置为 默认值
  • 有默认值的参数,一般放在 最后面
  • 目的 简化函数的调用,调用函数时,如果没有传参,在函数内部使用 默认值
def main(args: Array[String]): Unit = {
  def reg(name:String,age:Int=18,sex:String="男"): Unit ={
    println(s"登记计算机学生==>姓名:${name},年龄:${age},性别:${sex}")
  }
  reg("李雷")
  reg("韩梅梅",17,"女")
}

带名参数

调用函数时,可以 指定 参数名,此时可以 不按 顺序传参

def main(args: Array[String]): Unit = {
  def reg(name:String,age:Int=18,sex:String="男"): Unit ={
    println(s"登记学生==>姓名:${name},年龄:${age},性别:${sex}")
  }

  reg(age=20,sex="女",name="lucy")
}

原文出处:/show_1IX1BB4nKeBJ.html