定义函数

41 阅读2分钟

(一)定义函数

格式如下:

image.png

**要点:
1.特别注意要写=
2.函数内的最后一个表达式或者语句的值,就是函数的返回值。Unit 表示没有返回值,调用这个函数时,不会接收到任何的处理结果。

(二)举例子 1.当我需要定义一个函数,并且想要求两个数的较大者时,可以敲击以下代码。


object base30 {

  // 定义一个函数
  // 功能: 求两个数的较大者
  def max(x: Int, y: Int): Int = {
    if (x > y)
      x
    else
      y
  }

  def main(args: Array[String]): Unit = {
    val rst = max(1, 100)
      println(s"${rst}")
  }
}

运行结果如图所示:

image.png 也可以敲击另外这一组代码:

import base30.max

object base31 {

  // 定义一个函数
  // 功能: 求两个数的较大者
  // 格式:
  //    1. 有一个 =
  //    2. 返回值类型。
  //    函数内的最后一个表达式或者语句的值,就是函数的返回值。
  //    Unit 表示没有返回值,调用这个函数时,不会接收到任何的处理结果。
  def max(x: Int, y: Int): Int = {
    val t = if (x > y) x else y

    t // 就是返回值
  }

  // 如果一个函数不需要参数,可以省略()
  //
  def say: Unit = {
    printf("hahahaha~~~")
  }

  def main(args: Array[String]): Unit = {
    val rst = max(1, 100)

    println(s"${rst}")

    // 调用一个没有()的函数,也不要加()
    say
  }
}

这两组代码运行的结果是一样的 2。当我有两个甚至两个以上的未知数要比大小时,可以敲击以下代码:


object base32 {

  object Demo {
    // 定义一个函数,求三个数的最大值
    def max(x: Int, y: Int, z: Int): Int = {
      // 先比较x和y,得到较大的数,再和z比较
      val temp = if (x > y) x else y
      if (temp > z) temp else z
    }

    def main(args: Array[String]): Unit = {
      val rst = max(1, 10, 100)
      println(s"$rst")
    }
  }
}

这个代码的运行结果和第一个一样,因为最大数就是100,所以只会显示这个100 3.当我想看明白一点,可以将以上的未知数换一下,例如:

object base33 {

  // 定义一个函数
  // 功能:求三个数的较大者
  // 分析:
  /*
   * 1. 三选一
   * if(x>=y && x >=z){
   * x
   * } else if(y>=x&&y>=z){
   * y
   * } else{
   * z
   * }
   *
   * 2. 两次 二选一
   * var t = if(x>y) x else y
   * if(t>z) t else z
   */
  def max(x:Int, y:Int, z:Int):Int = {
    var t = if(x>y) x else y
    if(t>z) t else z
  }

  def main(args: Array[String]): Unit = {
    val rst = max(1000,200,100)
    println(s"${rst}")
  }
}

运行结果如图所示:

image.png 可以看出,这个最大值的取值从100变成了1000。 4.还可以敲击以下代码:


object base34 {

  // 定义一个函数
  // 功能:求三个数的最大值和最小值。
  // 注意:函数需要返回多个值。把要放回的数据使用()包在一起,成为一个整体
  def max(x:Int, y:Int, z:Int): (Int, Int) = {
    var maxValue = if(x>y) x else y
    maxValue = if(maxValue>z) maxValue else z

    var minValue = if(x>y) y else x
    minValue = if(minValue>z) z else minValue

    // println(minValue, maxValue)

    (minValue, maxValue) // 是一个整体
  }

  def main(args: Array[String]): Unit = {
    val rst = max(1000,200,100)
    // 访问这个整体中的某个值: _数字
    println(s"最小值是:${rst._1}, 最大值是:${rst._2}")
  }
}

运行结果如图所示:

image.png 以上代码是可以求出最小值和最大值。在很多领域里面都特别适用。