(十一)函数参数

73 阅读1分钟

(一)函数参数的默认值

  1. 定义有默认值的函数
  2. 格式为 :def 函数名(参数1:类型1=默认值1,参数2:类型2=默认值2)
  3. 代码例如

    object Base47 {
      /*
      * 函数参数的使用
      */
      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="小李")

      }
    }

结果如下

屏幕截图 2025-10-11 083925.png

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

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


    object Base48 {
      /*
      * 函数参数的使用
      */
      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?

代码如下


    object Base49 {
      // 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()
        val result2 = getSum(1, 2, 3, 5)
        println(result1, result2)
      }
    }

(四)案例

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

参数有三个,表示三条边,可以使用double类型; 任意两边之和大于第三边即可。 代码如下


    object Base50 {
      // 判断给定的三边,能否构成一个三角形?
      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) // false

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

    }