副作用和参考透明度有什么区别?

时间:2014-01-23 19:51:24

标签: functional-programming

这些条款之间有什么区别?

  • 一项功能没有副作用

  • 一个功能是参照透明的

1 个答案:

答案 0 :(得分:2)

一个引用透明的功能肯定没有副作用。但是,没有副作用的功能并不总是具有透明性。

示例:

int x = 0;

int referentiallyTransparent(int y)
{
    return y + 1;
}

int hasNoSideEffects(int y)
{
    return x + y;
}

函数hasNoSideEffects没有副作用。这意味着调用hasNoSideEffects(y)不会影响程序的状态。但是,它返回的值受程序状态的影响,并且不仅仅依赖于输入变量y,因此调用hasNoSideEffects(y)不能总是被它减少的值替换。

相关问题