2016-09-19 3 views
-3

나는 그들이 순수한 것인지 아닌지를 말할 수없는 두 가지 기능을 가지고있다.이 기능들은 순수하거나 불순한가?

여기가 첫 번째 것입니다.

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

나는 input2의 가변성을 허용하기 때문에 불순한 기능이라고 생각합니다. 그러나 이것이 왜 문제가 되는가? 함수 외부에서 input2에 액세스 할 수 없으므로 왜 돌연변이가 발생했는지는 중요하지 않습니다.

다음은 제 두 번째 기능입니다.

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

다시 말하지만 입력 1과 입력 2를 참조로 전달하므로 불완전한 함수라고 생각합니다. 그러나 다시, 이것이 왜 문제인지는 알 수 없습니다. 우리는 input1 또는 input2를 수정하지 않습니다 ... 그렇다면이 함수는 왜 불순한 것입니까?

+0

"함수 2 외부에서 input2에 액세스 할 수 없습니다. 무엇을 의미합니까? – AndyG

+4

그건 C++이 아니에요. - – Quentin

+0

이 코드는 C++이 될 예정입니까? 이것은 컴파일 가능한 코드에 가깝지 않습니다. –

답변

0

Pure_Function을 찾으십시오.

첫 번째 방법은 부작용이 있습니다 (변경하려면 input2). -> 불순한

두 번째 것은 순수하고 부작용이 없으며 다른 규칙은 위반되지 않습니다.