这些功能是纯粹的还是不纯的?

时间:2016-09-19 18:14:20

标签: purely-functional

我有两个功能,我无法判断它们是否纯净。

这是第一个。

someFunction(ref input1, ref input2) {
    input2 = input1 + input2
    return input2
}

我认为它是一个不纯的函数,因为它允许input2的可变性。但为什么这是一个问题呢?我们无法在函数之外访问input2,所以我不明白为什么它变异或者是否发生变化。

这是我的第二个功能。

someFunction(ref input1, ref input2) {
     return input1 + input2
}

同样,我认为这是一个不纯的函数,因为它通过引用传递input1和input2。但同样,我不明白为什么这是一个问题。我们没有修改input1或input2 ......为什么这个函数不纯?

1 个答案:

答案 0 :(得分:0)

请看Pure_Function

您的第一种方法有副作用(它会改变input2)。 - >不纯的

第二个是纯粹的,没有副作用(并且没有违反其他规则)。