引用透明
- 对相同的输入,总是能得到相同的输出。
- 如果 f(x) 的参数 x 和函数体都是引用透明的,那么函数 f 是纯函数。
违反引用透明的例子

我们可以很清楚的看到,对于相同的输入,第二次调用append()和第一次调用append()时候的输出结果是不同的。
纯函数(函数的纯粹性)
指的是没有副作用的函数
副作用
指的是状态的变化:
- 修改全局变量
- 抛出异常
- IO 读写
- 调用有副作用的函数
副作用的例子
var x = 1
def xpulsy_v1(y: Int) = x + y
def xpulsy_v2(y: Int) = {x += y; x}
x
xpulsy_v1(2)
x
xpulsy_v2(2)
x

我们可以清楚的看到,调用xplusy_v2函数的时候,改变了 x 的值,产生了副作用。
函数式编程的优点
- 生产效率高
- 易于推理
- 并行编程
将函数赋值给变量
Scala 的语法规定,将函数赋值给变量时,必须在函数后面加上空格和下划线
def sayHello(name: String) { println("Hello, " + name) }
。。。
扫码查看历史消息,可获得完整版文章

本文探讨了函数式编程中的核心概念——纯函数与引用透明,解释了它们如何确保函数对于相同输入始终产生相同输出,避免副作用,提高代码的可预测性和可维护性。
631

被折叠的 条评论
为什么被折叠?



