2016-09-14 5 views
2

순수 함수가 동일한 클래스 내에서 private 상수 변수를 사용할 수 있습니까?순수 함수가 같은 클래스 내에서 private 상수 변수를 사용할 수 있습니까?

class TimesThousand { 
    const CONSTANT = 1000; 

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

calculate()pure function으로 간주 될 수있다 : 예를 들어

?

+2

어떤 언어입니까? 그리고 네, 서면으로, 그것은 순수한 기능입니다. – melpomene

+0

답변 해 주셔서 감사합니다. 대충 초안 작성 – bbnn

+1

상수가 함수의 순도에 어떤 영향을 미칠 것이라고 생각하십니까? 아마도 "순결"이 아니라 오히려 "[참조 적으로 투명하다] (https://en.wikipedia.org/wiki/Referential_transparency_ (computer_science))" – Bergi

답변

1

순수한 함수는 반환 값이 입력 값에 의해서만 결정될 때 관찰 가능한 부작용없이 순수합니다.

귀하의 기능은 순수합니다. CONSTANT의 값은 (이름에서 알 수 있듯이) 상수이므로 출력은 입력에 의해 순전히 결정됩니다. Wikipedia에서

:

함수가 순수 기능이 고려 될 수있다

경우 기능 유지에 대한 다음 두 문장 모두 :

  1. 기능은 항상 같은 인수 주어진 동일한 결과 값을 평가 가치. 함수 결과 값은 프로그램 실행이 진행되는 동안이나 프로그램의 다른 실행 사이에서 변경 될 수있는 숨겨진 정보 나 상태에 의존 할 수 없으며 I/O 장치의 외부 입력에 의존 할 수도 없습니다.
  2. 결과를 평가해도 변경 가능한 객체의 변경이나 I/O 장치로의 출력과 같은 의미 상 관찰 가능한 부작용이나 출력이 발생하지 않습니다.
+0

그러나 두 번째 "다른 실행에서 첫 번째 진술은 유지되지 않습니다. 프로그램 "이라면, 상수는 다른 값을 가질 수 있습니다. 예를 들어 APP_NAME은 상수이지만 실행중인 프로그램 인스턴스에 따라 달라질 수 있습니다. 내가 놓친 게 있니? – P0lska

+0

'CONSTANT'의 가치는 어떻게 변할 것입니까? 그것은 변할 수없는 불변의 가치입니다. –