在 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
}