透明引用:函数的返回值只依赖于其输入值的特性。 使用相同的 x 值多次调用sinx,如果系统每次都重新进行一次计算将会是极大的浪费。即使在“纯粹”的函数库中,也常常执行内部优化,如使用缓存来记住之前的计算结果。但缓存引入了副作用,因此缓存的状态会被修改。然而,这种状态的改变对用户来说是不可见的(除非影响性能的意义)。函数的实现只需要负责达到“契约”即可,也即达到线程安全与透明引用。 参考《Scala程序设计》第二版