scala函数参数

24 阅读2分钟

(一)函数参数的默认值

1. 定义有默认值的函数

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

object Base38 {
  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)    //不写性别,默认为女
    hello()             //不写所有参数,全部使用默认值

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

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

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

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

}    
sayHello // 不用加()

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

【编码示范】

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

示例:

object Base39 {

//  def getSum(a:Int*):Int = {
//    a + b
//  }

def getSum(args:Int*):Int = {
  //[1,2,3,4 ]
  var sum = 0
  for(i <- args){
    sum += i
  }
  sum
}
def main(args: Array[String]): Unit = {
  val result1 = getSum(1)
  val result2 = getSum(4,1,2,3,5)
  println(result1,result2)
}
}

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

object Base40 {
  //判断给定的三边,能否构成一个三角形?
  def testTriangle(a:Double,b:Double,c:Double):Boolean = {
    a+b>c && a+c>b && b+c >a
  }
  //判断一个数是不是素数
  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)

  }
}