静态方法是否接近纯方法?

时间:2018-01-23 11:03:57

标签: static-methods purely-functional

按照纯方法的要求(一种对外界没有副作用的方法),我发现大多数时候静态方法都符合这个要求。我们无法在静态方法中访问实例变量,因此大大降低了副作用的可能性。然后我们主要使用静态方法根据输入值进行一些计算,只返回新值...输入很少发生变异。

所以可以说静态方法足以替代纯方法。

1 个答案:

答案 0 :(得分:2)

没有。只是静态不会使函数变得纯粹。

在纯函数式编程中,函数的结果应仅依赖于它们的参数,而不管全局状态如何。静态函数可以轻松访问和修改全局状态。

任何有用的纯函数都必须返回一个值。静态函数可以并且通常被声明为void,这对纯函数没有意义。

纯函数每次都应为相同的输入产生相同的结果。使用静态计数器的任何静态函数都可能破坏该规则。

在Java中,例如,流对象本质上是功能性的。它们的函数(如filter())不是静态的,而是通过生成新流而不是修改原始流对象来维护流数据的不变性。

话虽这么说,静态函数更容易没有副作用,因为他们不用担心修改它们自己的实例状态。实例函数需要避免修改自己的实例状态和全局静态。