函数参数

43 阅读1分钟

参数默认值

// gender:
def greet(name: String = "哈哈", age: Int = 18, gender: String = "女"): Unit = {
  println(s"我是${name},我今年${age}${gender}")
}

def main(args: Array[String]): Unit = {
  greet("小花", 18) // 默认值
  greet("小明", 20, "男")
  greet()
}

// 设置age为20,其他采用默认值
// 传参数的时候,指定参数的名字
greet(age = 20)
greet(gender = "男", age = 20)

案例1:传入不同的参数

//传入不同数量的参数
// 传入一个学生的姓名,从第二个参数开始,是这个学生的某些学科的分数
// 变参:允许传入不同个数,但是类型相同的参数
//Int*
//array 数组

def greet(name: String, score: Int*): Unit = {
  //array 是一个列表
  var total: Double = 0
  for (i <- score) {
    total += i
  }
  val avg = total / score.length
  println(s"${name}, 平均分是:${avg}")
}

def main(args: Array[String]): Unit = {
  greet("小花", 90, 100, 98, 100, 60)
  greet("小明", 80, 88)
  greet("小绿", 90)

}

案例2:累加

// 1 + 2 + 3 + 4 + ... + n
def sum(n: Int): Int = {
  if (n == 1) {
    1
  } else {
    sum(n - 1) + n
  }
}

def main(args: Array[String]): Unit = {
  val s = sum(100)
  println(s)
}

案例3:阶乘

// f(n) = 1 * 2 * 3 * 4 * 5 .... * n
def f(n: Int): Int = {
  if (n == 0 || n == 1) {
    1
  } else {
    n * f(n - 1)
  }
}

def main(args: Array[String]): Unit = {
  val s = f(4) // 4*3*2*1 = 24
  println(s)
}