2016-09-14 49 views
2

純函數可以在同一個類中使用私有常量變量嗎?純函數可以在同一個類中使用私有常量變量嗎?

例如:

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. 函數的結果總是相同的結果值給出了相同的說法值(S)。函數結果值不能取決於程序執行過程中或程序的不同執行之間可能改變的任何隱藏信息或狀態,也不能取決於來自I/O設備的任何外部輸入。
  2. 對結果的評估不會導致任何語義上可觀察的副作用或輸出,例如突變可變對象或輸出到I/O設備。
+0

但是第一個陳述並不成立,因爲在兩個「不同的處決該計劃「,CONSTANT可能會有不同的價值。例如,APP_NAME是一個常量,但可能會根據程序的哪個實例正在運行而改變。我錯過了什麼嗎? – P0lska

+0

'CONSTANT'的價值會如何改變?這是一個不可改變的價值,意味着它永遠不會改變。 –

相關問題