Scala函数的参数

40 阅读1分钟

默认参数

格式:

def 函数名(参数1:类型1=默认值1,参数2:类型2=默认值2)

案例一:

object day7 {
  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)
  }
}

创建不带()方法

格式:

def 方法名:[返回类型]={}

案例二:

object day71 {
  // 如果函数不需要参数,可以在定义函数的时候省略()
  def greet:Unit = {
    println(s"hahhaha")
  }
  def main (array: Array[String]):Unit={
    greet
  }
}

形参

问: 如何定义一个函数,它能接收数量不定的参数,并计算它们的累加?例如:getSum(1,2,3) 得到6, getSum(1,2,3,4) 得到10? 分析:我们需要一个统一的容器,把参数都装起来。

案例三:

传入不同数量的参数,第一个是学生的名字,从第二个开始,是这些学生的某些学科的得分

object day72 {
  def greet(name:String,score:Int*):Unit = {
    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)
  }
}

课时案例

案例一:

1-100的和
object day73 {
  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)
  }
}


参数有三个,表示三条边,可以使用double类型; 判断标准任意两边之和大于第三边即可。
def testTriangle(a:Double, b:Double, c:Double):Boolean = {    


}  
def main() = {    
    val r = testTriangle(10,20,30);  
    println(r);  
}