函数参数

84 阅读1分钟

一.函数参数的默认值

1. 定义有默认值的函数

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

object Base44 {
  /*
   *函数参数的使用
   */
  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()         //2.不写所有参数,全部使用默认值
    
    hello(age = 18)//3.设置年龄为18,其它的参数使用默认值
    hello(gender="男",name = "小李")//4.设置名字和性别年龄使用默认值
  }
}

二.创建不带()的方法

如果函数没有参数,可以省略定义函数时的( ) 格式:def 方法名:[返回类型]={}

object Base45 {
  /*
   *函数参数的使用
   */
  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 = {
    test//正确
    test()//错误
  }
}

三.创建接受变参的方法

  • 如何定义一个函数,它能接收数量不定的参数,并计算它们的累加?例如:getSum(1,2,3) 得到6, getSum(1,2,3,4) 得到10?
  • 在Scala中创建接受变参的方法为:参数类型*,这种方式只能接受同一类型的参数。
object Base46 {
  //允许参数的个数不同,类型相同
  //变参:参数类型的后边接一个*
 def getSum(args:Int*):Int = {
   //[1,2,3,4]
   var sum = 0
   for(i <- args){
     sum += 1
   }
   sum
 }

  def main(args: Array[String]): Unit = {
    val result1 = getSum(1)
    val result2 = getSum(4,1,2,3,5)
    println(result1,result2)
  }
}
object Base47 {
//判断给定的三边,能否构成一个三角形?
  def testTriangle(a:Double,b:Double,c:Double):Boolean = {
    //完成代码
    a + b > c && a + c > b && b + c > a
  }
  //判断一个数是不是素数
  def isPrime(num:Int):Boolean ={
    var isPrime= true
    for(i <- 2 to num-1){
      if(num %i ==0){
        isPrimeNum = false
      }
    }
    //最后一行表示函数的返回值
    isPrimeNum
  }


  def main(args: Array[String]): Unit = {
    var r = testTriangle(1.0,2.0,3.0)
    println(r)
  }
}