参考透明度是什么意思?我曾听人描述它为“这意味着你可以用等号替换等号”,但这似乎是一个不充分的解释。


当前回答

如果你对词源感兴趣(比如。为什么这个概念有这个特殊的名字),看看我关于这个主题的博客文章。这个术语来自哲学家/逻辑学家奎因。

其他回答

当我读到被接受的答案时,我以为我在不同的页面上,而不是在stackoverflow上。

引用透明性是定义纯函数的一种更正式的方式。因此,如果一个函数在相同的输入上始终产生相同的结果,那么它就是引用透明的。

let counter=0
function count(){
  return counter++
}

这不是引用透明的,因为返回值取决于外部变量“counter”,并且它一直在变化。

这是我们如何使它的参考透明:

function count(counter){
       return counter+1
   }

现在这个函数是稳定的,并且在提供相同的输入时总是返回相同的输出。

编程中的引用透明性指的是,当一个函数提供了一个输入时,它总是会为给定的输入返回相同的值。以下面的示例函数为例。

Int plusFive(int x){

return x+5

}

对于给定的输入整数x,该函数总是返回相同的值。上述函数的输出可以被其返回值所替代,并且代码的操作应该相同。例如,如果x=10,那么代码可以写成:

Int输出= + 5 (10)

OR

Int输出= 15

请注意,这个“意义”的概念是发生在观察者头脑中的事情。因此,同样的“参考”对不同的人可能意味着不同的事情。例如,我们在维基百科上有一个爱丁堡消歧页面。

在编程上下文中出现的一个相关问题可能是多态性。

也许我们应该为特殊情况下的多态(或者甚至是强制转换)取一个名字,其中不同的多态情况在语义上是等价的(而不是完全相似)。例如,数字1——可以用整数类型、复杂类型或任何其他类型表示——可以用多态方式处理)。

引用透明函数的作用类似于数学函数;给定相同的输入,它总是会产生相同的输出。它意味着传入的状态没有被修改,并且函数本身没有状态。

引用透明函数是只依赖于其输入的函数。