scala的基本函数调用

61 阅读2分钟

1定义函数

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

案例:找到x,y中的较大者

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

  def main(args: Array[String]): Unit = {
    var rst =max(2,3)
    println(s"23的较大者是:${rst}")
  }

结果如图:

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

2. 函数的基本使用

返回值:

1.指定返回类型

2.函数内,最后一个表达式(最后一句代码)就是函数的返回值

3.unit 表示这个函数没有返回值(void)

参数:

1.如果没有参数,在定义函数时,可以省略(),在调用函数的时候,不能添加()

(1)指定返回
def max(x :Int, y : Int):Int={
if(x>y)
  x
else {
  y
  100
}
}

def main(args: Array[String]): Unit = {
  var rst =max(2,3)
  println(s"23的较大者是:${rst}")
}

结果:

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

(2)函数内,最后一个表达式(最后一句代码)就是函数的返回值
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 = {
    var rst =max(2,3)
    println(s"23的较大者是:${rst}")
    say
  }

结果:

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

参数:如果没有参数,在定义函数时,可以省略(),在调用函数的时候,不能添加()

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 = {
    var rst =max(2,3)
    println(s"23的较大者是:${rst}")
    say()
  }

结果:

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

3.案例:比较x y z 中的较大者

(1) 三选一

object basic34 {

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

}

  def main(args: Array[String]): Unit = {
    var rst =max(2,3,5)
    println(s"2和3的较大者是:${rst}")

  }
}

结果:

屏幕截图 2025-10-13 093852.png (2)两个选一个较大者,然后较大者和另外一个比较

object basic34 {

def max(x :Int, y : Int,z :Int):Int={
  if(x>y)
    x
   else
     y
    val rst = if(x>y)  x
    else  y
  if (rst >z)
    rst
   else
     z

}

  def main(args: Array[String]): Unit = {
    var rst =max(2,3,5)
    println(s"2和3的较大者是:${rst}")

  }
}

结果:

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

函数返回多个值

例题:找到x y z 中的最大值和最小值

object basic35 {
  // 作用:找到x y z 中的最大值和最小值
  //(Int,Int)是返回值的类型 表示这个函数的返回值有两个整数
  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) x else y
    minValue=if (minValue<z)minValue else z

    (minValue,maxValue)
  }

  def main(args: Array[String]): Unit = {
    var rst =max(100,29,200)
    println(s"最小值:${rst._1},较大者${rst._2}")
  }
}

结果:

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

参数默认值:如果在调用的时候 没有传入

格式:参数名:类型 = 默认值

例题:

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

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


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

结果:

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

参数类型:

(1) 可变参数:用来接受同一类型的多个参数

格式:参数类型*

代码案例:

scss
 体验AI代码助手
 代码解读
复制代码
object basic38 {


// 可变参数:用来接受同一类型的多个参数
// 格式: 参数类型*
def getSum(args:Int* ):Int={
  var sum=0
  for (i <- args){
    sum += i
  }
  sum
}

def main(args: Array[String]): Unit = {
  val rst1=getSum(1,2,3)
  val rst2=getSum(1,2,3,4)
  val rst3=getSum(1,2)
  println(rst1,rst2,rst3)
}
}

结果:

屏幕截图 2025-10-15 145652.png