函数参数的使用

63 阅读1分钟

函数参数的默认值

1.定义有默认值的函数:def 函数名(参数1:类型1=默认值1,参数2:类型2=默认值2)

  • eg:
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)
    hello()

    hello(age=18)
    hello(name = "小李",gender ="男")
  }
}

创建不带()的方法

定义函数的时候,不写(),那么在调用函数的时候,也不能写()

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

def main(args: Array[String]): Unit = {
  
  test //正确
  test() //错误

创建接受变参的方法

1.允许参数个数有多个,但是要类型相同 2.就是在参数类型后面加"*"

object Base42 {
  def getSum(args: Int*): Int = {
    var sum = 0
    for (i <- args) {
      sum += i
    }
    sum  // 这里返回 sum
  }

  def main(args: Array[String]): Unit = {
    val result1 = getSum(1)
    val result2 = getSum(4, 1, 2, 3, 5)
    println(result1, result2)  // 打印元组
    // 或者分别打印
    // println(result1)
    // println(result2)
  }
}

eg:编写一个函数,接受一个参数,判断给定的数字是否为素数

object TriangleAndPrime {
  // 判断三个数字是否能构成三角形
  def testTriangle(a: Double, b: Double, c: Double): Boolean = {
    a + b > c && b + c > a && a + c > b
  }

  // 判断一个数是否为质数
  def isPrime(num: Int): Boolean = {
    if (num <= 1) return false
    var isPrimeNum = true
    for (i <- 2 to math.sqrt(num).toInt if isPrimeNum) {
      if (num % i == 0) {
        isPrimeNum = false
      }
    }
    isPrimeNum
  }

  def main(args: Array[String]): Unit = {
    val r = testTriangle(1.0, 2.0, 2.0)
    println(s"1.0, 2.0, 2.0 能构成三角形吗? $r")

    val r1 = isPrime(9)
    println(s"9 是质数吗? $r1")

    val r2 = isPrime(7)
    println(s"7 是质数吗? $r2")
  }
}