Scala的函数进阶

55 阅读1分钟

一、函数的字面量语法

除了使用def之外的,另一种定义函数的方式

语法:var 变量 = (参数列表)=>{方法体}

它省略了def,函数名以及函数的返回值类型。多了一个=>

代码演示:
less
 体验AI代码助手
 代码解读
复制代码
object basic45 {
  def sum1(x:Int,y:Int):Int={
    x+y
  }
  val sum2 =(x:Int,y:Int) =>{x+y}

  def main(args: Array[String]): Unit = {
    println(sum1(10,20))
    println(sum2(10,20))
  }
}

结果:

屏幕截图 2025-10-20 111110.png

Scala的函数字面量的简化方式

第一种方式为:_(占位符)。如果函数中的参数在方法体中只使用了一次,可以用_替换。

第二种方式为:只有一个表达式时,可以省略括号{}。

代码演示:

kotlin
 体验AI代码助手
 代码解读
复制代码
object basic46 {
  val sum1=(x:Int,y:Int) => {x+y}
  val sum2=(x:Int,y:Int) =>x+y

  val sum3:(Int,Int) =>Int =_+_


  def main(args: Array[String]): Unit = {
    println(sum1(10,20))
    println(sum2(10,20))
    println(sum3(10,20))

  }
}

结果:

屏幕截图 2025-10-20 112135.png

部分应用函数

如果一个函数包含多个参数,对该函数传递部分参数使得这个函数返回一个函数,那么这种函数叫做部分应用函数

案例:定义一个函数,计算三个整数的和

代码:

less
 体验AI代码助手
 代码解读
复制代码
object basic47 {
  val sum2=(a:Int,b:Int,c:Int) => a+b+c

  def main(args: Array[String]): Unit = {
    val r =sum2(10,20,_)
    println(r(50))


    val r1=sum2(_,20,_)
    println(r1(10,30))
  }
}

结果:

屏幕截图 2025-10-20 113519.png