函数

26 阅读1分钟

一 定义函数

格式如下:

屏幕截图 2025-10-13 145724.png

object base34 {

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

    t //就是返回值
  }
  // 如果一个函数不需要参数,可以省略
  def main(args: Array[String]): Unit = {
    val rst = max(1,100)

    println(s"${rst}")
  }
}

(二)函数调用

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

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

     x + y

}  
val s = getSum(10,20)  
printf(s)

(三)函数规则

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

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

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

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

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

}

求三个数中的最大值

object base35
{// 定义一个函数
  // 功能:求三个数的较大者
  // 分析:
  /*
  * 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")
  }
}

多个返回值

object base36 {

  // 定义一个函数
  // 功能:求三个数的最大值和最小值。
  // 注意:因我需要返回多个值。把要放回的数据使用 () 包在一起,成为一个整体
  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}")
   }
}

(五)元组

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