函数参数

64 阅读1分钟

内容如下:

1. 函数参数的默认值;

2. 函数的变参;

3. 无参函数。

(一)函数参数的默认值

1. 定义有默认值的函数

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

[编码示范]

定义一个函数,并使用不同的参数来测试使用。

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

(二)创建不带()的方法

[讲] 如果函数没有参数,可以省略定义函数时的( )

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

[代码]

def sayHello: Unit = {    
println("hello")

}    
sayHello // 不用加()

[问] 调用时能加()吗?

[答] 如果在定义函数的时候没有写(),那么在调用函数的时候,也不要加()

(三)创建接受变参的方法

【提问】 如何定义一个函数,它能接收数量不定的参数,并计算它们的累加?例如:getSum(1,2,3) 得到6, getSum(1,2,3,4) 得到10?

【编码示范】

// 功能:求所有参数的累加  
// 变参特点:函数中的参数的个数是不确定的。思路:找一个容器把参数全部装起来!!!  
// 写法: 参数类型后面加*  
 def getSum(args:Int*): Int ={  
    var sum = 0  
    for(i <- args){  
      sum += i // 累加  
    }  
    sum  
  }

【案例编码示范】

object base37 {
  //传入不同的数量的参数
  //第一个参数是学生的名字,从第二个参数开始,是这个学生的某些个学科的得分
  //变参:允许传入不同个数,但是类型相等的参数
  //Int*
  //array 数组
  def greet(name:String,score:Int*):Unit={
    //score是一个列表
    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)
  }
}

(四)案例

【题目要求】定义一个函数,判断给定的三个数字是否能构成一个三角形,返回值为bool类型。

【题目分析】参数有三个,表示三条边,可以使用double类型; 判断标准任意两边之和大于第三边即可。

【示范编码】

def testTriangle(a:Double, b:Double, c:Double):Boolean = {    


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