Functional programming 纯函数能否在同一类中使用私有常量变量?

Functional programming 纯函数能否在同一类中使用私有常量变量?,functional-programming,pure-function,Functional Programming,Pure Function,纯函数能否在同一类中使用私有常量变量 例如: class TimesThousand { const CONSTANT = 1000; function calculate(number) { return number * CONSTANT; } } calculate()是否可以被视为一个纯函数?当返回值仅由其输入值确定时,纯函数是纯函数,没有任何可观察到的副作用 所以你的函数是纯函数。由于CONSTANT的值(顾名思义)是常量,因此输出完全由输入决定 发件人: 如果

纯函数能否在同一类中使用私有常量变量

例如:

class TimesThousand {
  const CONSTANT = 1000;

  function calculate(number) {
    return number * CONSTANT;
  }
}

calculate()
是否可以被视为一个
纯函数?

当返回值仅由其输入值确定时,纯函数是纯函数,没有任何可观察到的副作用

所以你的函数是纯函数。由于
CONSTANT
的值(顾名思义)是常量,因此输出完全由输入决定

发件人:

如果以下关于函数的两个语句均成立,则函数可被视为纯函数:

  • 给定相同的参数值,该函数始终计算相同的结果值。函数结果值不能依赖于任何隐藏信息或状态,这些信息或状态可能在程序执行过程中或程序的不同执行之间发生变化,也不能依赖于来自I/O设备的任何外部输入
  • 对结果的评估不会导致任何语义上可观察的副作用或输出,例如可变对象的突变或输出到I/O设备

  • 这是什么语言?是的,如前所述,这是一个纯函数。谢谢你的回答。只是一个粗略的代码草稿你认为常数会如何影响函数的纯度?也许不叫它“纯洁”,而是叫它“纯洁”,但第一条语句不成立,因为在两次“程序的不同执行”中,常量可能持有不同的值。例如,APP_NAME是一个常量,但可能会根据正在运行的程序实例而变化。我遗漏了什么吗?
    常量的值会如何变化?它是一个不可变的值,意味着它永远不能更改。@p0lska更改常量的唯一方法是更改源代码,并且这两个实例正在运行两个不同版本的应用程序。如果这两个实例运行的是同一版本的应用程序,那么它们就无法返回不同的值。如果你更改源代码,我会说这是一个不同的函数,它也纯粹用于相同的推理。我们不能期望函数在更改代码后是纯函数