Scala 函数

49 阅读2分钟

函数

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

函数的基本使用

返回值:
  • 1.指定返回值类型
  • 2.函数内,最后一个表达式(最后一句代码) 就是函数的返回值
  • 3.Unit 表示这个函数没有返回值 (void)
参数:
  • 如果没有参数,在定义函数时,可以省略(),在调用函数时,就不能添加()
//没有参数,可以省略()
def say:Unit = {
     println("hello world!")
   }
   
def main(args: Array[String]): Unit = {
    say  //调用函数
  }   

要点:
  • 1. 特别注意要写=

  • 2. 返回值类型要指定

函数规则

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

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

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

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

案例一:找到x y的最大值
def max(x: Int,y: Int):Int = {
  if(x > y)
    x
  else
    y
}

// 如果没有参数,可以省略()
def say(): Unit = {
  println("hello world")
}

def main(args: Array[String]): Unit = {

  say()

  var rst = max(609,913)// 调用函数
  println((s"609 和 913的最大值是:${rst}"))
}
案例二:找到x y z的最大值
/**
 //方法一:三选一
   def max(x: Int,y: Int,z: Int):Int = {
     // 自行修改代码 完成功能
     if(x >= y && x >= z)
       x
     else if (y >= z && y >= z)
       y
     else
       z
   }
 */
  
//方法二:两个选一个较大值 较大者和剩下的那个中选择一个
def max(x: Int,y: Int,z: Int):Int ={
  val res = if(x > y) x else y // x y 的较大者
  if (res > z) res else z
}

def main(args: Array[String]): Unit = {
  var rst = max(609,723,913)// 调用函数
  println((s"较大值:${rst}"))
}

返回多个函数值

案例三:找到x y z的最大值和最小值
// 函数返回多个数据
// 作用:找到x y z中的最大值 和 最小值
// (Int Int)是返回值的类型 表示这个函数的返回值中有两个整数!!!

def max(x: Int,y: Int,z: Int):(Int, Int) = {
  var maxValue = if(x > y) x else y // x,y 的较大者
  maxValue = if(maxValue > z) maxValue else z

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

  // 返回一个容器 包含两个值
  (minValue, maxValue)
}

def main(args: Array[String]): Unit = {
  var rst = max(609,913,723) // 调用函数
  println(s"最小值是:${rst._1},最大值是:${rst._2}")
}

参数默认值

如果在调用时没有传入,就使用这个默认值

格式:def 函数名(参数1:类型1=默认值1,参数2:类型2=默认值2)

// 参数默认值:如果在调用的时候,没有传入
// 格式:参数名:类型 = 默认值

def greet(name: String="xx", age: Int=24, gender: String="女") : Unit = {
  println(s"你好,我是${name},我今年${age}岁,我的性别是:${gender}")
}

def main(args: Array[String]): Unit = {
  greet("hh",18,"女")
  greet("hh",18)
  greet("hh")
  greet()

  // 设置年龄为20, 其他两个参数使用默认值
  greet(age=20)
  greet(gender="男",age=20)
}