Scala 函数式编程:闭包、部分应用函数与更多
1. 闭包的概念与应用
闭包是 Scala 函数式编程中的一个强大特性。为了测试闭包相关代码,可将其保存为名为 ClosureExample.scala
的文件,然后进行编译和运行。运行代码后,输出结果如下:
Hello, Al
Hola, Lorenzo
如果你从 Java 或其他面向对象编程语言转向 Scala,可能会疑惑这是如何实现的。在第一次运行时, sayHello
方法在 Foo
类的 exec
方法中引用了 hello
变量(此时 hello
已不在作用域内),而在第二次运行时,它还能捕捉到 hello
变量的变化(从 Hello
变为 Hola
)。这是因为 Scala 支持闭包功能。
在 sayHello
方法中有两个自由变量: name
和 hello
。 name
是函数的形式参数,而 hello
不是形式参数,它是对外部作用域中变量的引用。因此,Scala 编译器会创建一个包含 hello
的闭包。
下面是闭包的一些定义和特点:
-