(十)函数的基本使用

60 阅读2分钟

(一)定义函数

从不同的角度理解Scala函数会有不同的定义,如果一个函数作为某一对象的成员,那么这种函数就称为方法。如果从面向函数的角度理解Scala函数,那么Scala函数会具有面向函数式编程的特性。

屏幕截图 2025-10-09 081819.png

(二)调用函数

  • 返回值=函数
  • 代码如下


    object Base43 {
      // 定义一个函数
      // 1、位置:可以写在main里面,也可以写在外面
      // 2、要点
      // 该函数的类型
      // 省略return

      // 返回值,可以省略return
      def max(x: Int, y: Int): Int = {
        if(x > y) {
          x
        } else {
          y
        }
      }

      def main(args: Array[String]): Unit = {
        // 调用函数
        val s = max(10,20)
        println(s);

      }

    }

(三)函数规则

注意

1.只有一行可以省略{}。当Scala的函数体中只有一行表达式时可以省略{},输出结果依然不变。

2.最后一条语句为函数的返回值。当函数体中有多个语句存在时,返回最后一条语句的值。

3.函数的返回类型可以省略。它会自动推断。

4.没有形参,可以省略(),那么在调用函数时也不需要添加()

简单来说
  • 1、没有参数列表,可以省略定义函数时的(),那么调用的时候,也不需要再加上()
  • 2、返回的最后一条语句为函数的返回值
  • 3、如果函数体只有一句代码,又可以省略{}
代码如下

    object Base44 {
      // 返回值的类型
      // 省略return

      // def getSum(x:Int, y:Int) :Int = {
      //   x + y
      // }

      def getSum(x:Int, y:Int) :Int = x + y

      def dosomething: Int = {
        println("xxx")
        11
      }

      // 返回值,可以省略return
      def max(x:Int, y:Int):Int = {
        if(x > y) {
          x
        } else {
          y
        }
      }



    }

(四)函数返回多个值

例题
  • 定义一个函数,求三个数中的最大值及最小值

代码如下


    object Base45 {
      /**
       *  定义一个函数,求三个数中的最大值
       */

      def max(x:Int, y:Int, z:Int):Int = {
       // if(x > y) {
      //    x
       // } else {
       //   y
       // }
     // }
        val c = if (x > y){
        x
        } else {
          y
        }
        if(c > z) { c } else { z }
      }
      /**
       *  定义一个函数,求三个数中的最小值
       */
      def min(x:Int, y:Int, z:Int):Int = {
        val c = if (x < y){ x } else{ y }
        if( c > z ) { z } else{c }
      }
      def main(args: Array[String]): Unit = {
        val s = max(100, 100, 100)
        println(s);

        val m = min(1,10,100)
        println(s);
      }

    }
  • 定义一个函数,返回三个数中的最大值和最小值

代码如下


    object Base46 {
      /**
       * 定义一个函数,返回三个数中的最大值和最小值
       */
      def getMaxandMin(x:Int, y:Int, z:Int): (Int, Int) = {
        var min:Int = x
        var max:Int = x

        min = if(x < y) { x } else { y }
        min = if(min < z) { min } else { z }

        max = if(x < y) { y } else { x }
        max = if(max < z) { z } else { max }

        //println(min, max)
        (min, max)
      }

      def main(args: Array[String]): Unit = {
        // 调用函数
        val r = getMaxandMin(10,20,3)
        println(s"最小值${r._1}")
        println(s"最大值${r._2}")
      }
    }