函数字面量

27 阅读1分钟

在 Scala 中,函数字面量(Function Literal)  是一种匿名函数(没有名称的函数),可以直接作为值传递、赋值给变量,或作为参数传递给其他函数。它是函数式编程的核心概念之一,允许将函数当作 “第一类公民” 来处理。

函数字面量的基本语法

Scala 函数字面量的基本语法为:

(参数列表) => 表达式
  • 参数列表:用括号包裹的零个或多个参数(参数类型可省略,编译器会自动推断)。
  • =>:箭头符号,分隔参数列表和函数体。
  • 表达式:函数的返回值(函数字面量的返回值是表达式的结果)。

常见形式示例

1. 无参数的函数字面量

() => println("Hello, 函数字面量!")
  • 说明:没有参数,调用时执行打印语句。

2. 单参数的函数字面量

参数列表只有一个参数时,可省略括号:

x => x * 2  // 等价于 (x) => x * 2
  • 说明:接收一个参数 x,返回 x * 2 的结果。

3. 多参数的函数字面量

(a, b) => a + b  // 接收两个参数 a 和 b,返回它们的和

4. 显式指定参数类型

如果编译器无法推断参数类型,需要显式声明:

(x: Int, y: Int) => x * y  // 明确参数 x 和 y 为 Int 类型

5. 多行函数体的函数字面量

函数体有多行时,用大括号 {} 包裹,最后一行表达式的结果为返回值:

(x: Int) => {
  val square = x * x
  square + 10  // 返回 x² + 10
}