2016-09-14 18 views
2

純粋な関数は、同じクラス内のプライベート定数変数を使用できますか?純粋な関数は、同じクラス内のプライベート定数変数を使用できますか?

class TimesThousand { 
    const CONSTANT = 1000; 

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

calculate()pure functionとして考えることができます。たとえば

+2

どのような言語ですか?そして、はい、書かれているように、それは純粋な機能です。 – melpomene

+0

あなたの答えに感謝します。大まかなドラフトコード – bbnn

+1

定数がどのように関数の純度に影響すると思いますか? – Bergi

答えて

1

戻り値が入力値によってのみ決定され、観察可能な副作用がない場合、純粋な関数は純粋です。

あなたの機能は純粋です。 CONSTANTの値は(名前が示すように)定数なので、出力は純粋に入力によって決まります。

  1. 機能常に同じ引数を与えられた同じ結果値を評価します。機能ホールドに関する次のステートメントの両方があれば関数は純粋な機能と見なすことができる

    Wikipediaから

    値。関数の結果値は、プログラムの実行中またはプログラムの異なる実行間で変更される可能性のある隠れ情報や状態に依存することも、I/Oデバイスからの外部入力に依存することもできません。

  2. 結果を評価しても、変更可能なオブジェクトの突然変異やI/Oデバイスへの出力など、意味的に観察可能な副作用または出力は発生しません。
+0

しかし、最初の声明は2つの異なる「実行中」から保持されません。プログラム "では、定数は異なる値を保持することがあります。たとえば、APP_NAMEは定数ですが、実行中のプログラムのインスタンスによって変わることがあります。何か不足していますか? – P0lska

+0

「定数」の価値はどう変わりますか?それは決して変わることのできない、不変の価値です。 –

関連する問題