按照纯方法的要求(一种对外界没有副作用的方法),我发现大多数时候静态方法都符合这个要求。我们无法在静态方法中访问实例变量,因此大大降低了副作用的可能性。然后我们主要使用静态方法根据输入值进行一些计算,只返回新值...输入很少发生变异。
所以可以说静态方法足以替代纯方法。
答案 0 :(得分:2)
没有。只是静态不会使函数变得纯粹。
在纯函数式编程中,函数的结果应仅依赖于它们的参数,而不管全局状态如何。静态函数可以轻松访问和修改全局状态。
任何有用的纯函数都必须返回一个值。静态函数可以并且通常被声明为void,这对纯函数没有意义。
纯函数每次都应为相同的输入产生相同的结果。使用静态计数器的任何静态函数都可能破坏该规则。
在Java中,例如,流对象本质上是功能性的。它们的函数(如filter())不是静态的,而是通过生成新流而不是修改原始流对象来维护流数据的不变性。
话虽这么说,静态函数更容易没有副作用,因为他们不用担心修改它们自己的实例状态。实例函数需要避免修改自己的实例状态和全局静态。