函数的基本使用

188 阅读2分钟

一. 定义函数

格式:

def max(x: Int, y: Int):Int = {
  if(x > y)
    x
  else
    y
}

其中:

  1. def:是 Python 中用于定义函数的关键字,表明这是一个函数定义的开始。
  2. max:是函数名,用于标识这个函数,方便在其他地方调用该函数。
  3. (x: int, y: int):是函数参数列表,其中 x 和 y 是参数名,: int 表示这两个参数的类型为整 数,即该函数期望接收两个整数类型的参数。
  4. 后一个int:表示函数的返回类型为整数,即这个函数执行后会返回一个整数结果。

要点:

  1. 功能:求两个数的较大者
  2. 格式:
    1. 有一个 =
    2. 返回值类型 函数内的最后一个表达式或者语句的值,就是函数的返回值

二. 函数调用

格式: 返回值=函数(参数列表)

示例:

求两个数的较大者

object base1101 {
  def max(x: Int, y: Int):Int = {
    val t = if(x > y) x else y

    t // 就是返回值
  }

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

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

    println(s"${rst}")

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

其中:

  1. 函数内的最后一个表达式或者语句的值,就是函数的返回值
  2. Unit 表示没有返回值,调用这个函数时,不会接收到任何的处理结果
  • 在 main 函数中,首先调用 max 函数,传入参数 1 和 100,将返回的较大值 100 赋给 rst 并打印;然后调用 say 函数,执行打印操作。

三. 函数规则

规则

  1. 函数体仅一行表达式时,可省略大括号,输出结果不变。
  2. 函数体有多个语句时,返回最后一条语句的值。
  3. 函数返回类型可省略,会自动推断。
  4. 函数无形参,定义和调用时都可省略括号。

示例:

求两个数的较大者:

object base1102 {
  // 定义一个函数
  /*
  * 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}")
  }
}

其中:

  • max 函数:接收三个整数参数 xyz。首先通过 var t = if(x>y) x else y 找出 x 和 y 中的较大值并赋值给 t,然后再通过 if(t>z) t else z 比较 t 和 z,最终得到三个数中的最大值并返回。
  • main 函数:调用 max 函数,传入参数 1000200100,将返回的最大值赋值给 rst,然后使用 println 打印出 rst 的值。

四. 函数返回多个值

示例:

求三个数的最大值和最小值:

object base1103 {
  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}")
  }
}

注意: 函数需要返回多个值。把要放回的数据使用()包在一起,成为一个整体

五. 元组

元组的定义: 容器,可以装入不同的数据类型的数据

访问元组: 元组通过Tuple_INDEX的方式访问元组中的元素,Tuple表示元组,INDEX表示索引。

示例:

object base1104 {
  def main(args: Array[String]): Unit = {
    // 1. 定义一个元组:使用( ) 把数据包起来,就可以了。
    val t = (1, "1", 1.2, false, 0)

    // 2. 取出元素,通过 ._数字序号 来访问
    // 取出 1.2
    println(t._3)
    // 取出 false
    println(t._4)
  }
}