12函数参数

57 阅读2分钟

(一) 函数参数的默认值

1. 定义有默认值的函数

格式

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

object base41 {
  /**
  *函数参数使用
   */
  def hello(name:String="小明",age:Int=17,gender:String="女"): Unit = {
    println(s"hello,我是${name},${age} 岁,性别:${gender}")

  }

  def main(args: Array[String]): Unit = {
    hello("小花",18,"女")
    hello("小明",19,"男")
    hello("小花",18)// 1. 不写性别,默认为女hello ()
    hello() // 2. 不写所有参数,全部都用默认值}

    hello(age=18) //3.设置年龄为18,其他参数使用默认值
    hello(name = "小李",gender = "男") //4.设置姓名为小李,性别为男,年龄使用默认值
  }
}

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

如果函数没有参数,可以省略定义函数时的( )
格式:def 方法名:[返回类型]={}。
object base41 {
  /**
  *函数参数使用
   */
  def hello(name:String="小明",age:Int=17,gender:String="女"): Unit = {
    println(s"hello,我是${name},${age} 岁,性别:${gender}")

  }

  def test():Unit={
    println("test.......")
  }



  def main(args: Array[String]): Unit = {
    hello("小花",18,"女")
    hello("小明",19,"男")
    hello("小花",18)// 1. 不写性别,默认为女hello ()
    hello() // 2. 不写所有参数,全部都用默认值}

    hello(age=18) //3.设置年龄为18,其他参数使用默认值
    hello(name = "小李",gender = "男") //4.设置姓名为小李,性别为男,年龄使用默认值

    test   //正确
    test() //错误

  }
}

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

在Scala中创建接受变参的方法为:参数类型*,这种方式只能接受同一类型的参数。

功能:求所有参数的累加

变参特点:函数中的参数的个数是不确定的

写法: 参数类型后面加*

object base42 {
  
//  def getSum(a:Int,b:Int):Int = {
//    a+b
//  }
  
  //允许参数不同
  //变参
  def getSum(args:Int*): Int = {
    var sum = 0
    for(i <- args){
      sum += i // 累加
    }
    sum
  }

  def main(args: Array[String]): Unit = {
    val result1 = getSum(1)
    val result2 = getSum(1,2,3,4,5)
    println(result1,result2)
  }
}

(四)案例

【题目】:

1.定义一个函数,判断给定的三个数字是否能构成一个三角形,返回值为bool类型。

  1. 判断一个数是不是素数
object base43 {
  //定义一个函数,判断给定的三个数字是否能构成一个三角形,返回值为bool类型。
  def testTriangle(a:Double, b:Double, c:Double):Boolean = {
    a + b > c && b + c > a && a + c > b
  }

  // 判断一个数是不是素数
  def isPrime(num:Int):Boolean = {
    var isPrimeNum = true
    for(i <- 2 to num-1) {
      if(num % i == 0) {
        isPrimeNum = false
      }
    }
    isPrimeNum
  }

  def main(args: Array[String]): Unit = {
    val r = testTriangle(1.0,2.0,2.0);
    println(r); 

    val r1 = isPrime(9)
    println(r1)
  }
}

结果如图:

image.png