परिवर्त्य राज्य सब कुछ है कि एक समारोह में एक अलग मूल्य वापस कर सकते हैं, के बावजूद यह किया जा रहा है एक ही तर्क के साथ बुलाया।
जावा में सरल उदाहरण:
public static double badSqrt(double x) {
double r = Math.sqrt(x);
if (System.currentTimeMillis() % 42L == 0L) return r;
return r + 0.000000001;
}
इस समारोह में एक से थोड़ा गलत परिणाम कभी कभी गणना करता है। हम कहते हैं कि badSqrt
अशुद्ध है, क्योंकि इसका परिणाम पूरी तरह से अपने तर्क (और स्थिरांक) पर निर्भर नहीं है।
किसी ऐसे प्रोग्राम को डिबग करने वाले व्यक्ति के लिए जिसमें BadSqrt() या सामान्य रूप से अशुद्ध कार्य शामिल हैं, यह एक दुःस्वप्न है। अक्सर, कार्यक्रम काम करता प्रतीत होता है, लेकिन थोड़ी देर में, गलत परिणाम वितरित किए जाते हैं। जब तक कि फ़ंक्शन स्पष्ट रूप से प्रलेखित नहीं होता है या स्रोत कोड उपलब्ध नहीं होता है, तब तक बग को ट्रैक करना मुश्किल होगा।
ऐसे मामलों में, यह कहा जाता है कि कार्यों का व्यवहार उत्परिवर्तनीय स्थिति पर निर्भर करता है। यह वह राज्य है जिसे प्रोग्राम के पूरी तरह से असंबंधित हिस्सों द्वारा बदला जा सकता है (या उत्परिवर्तित), उदाहरण के लिए, प्रोग्राम (ऑपरेटिंग सिस्टम) द्वारा।
कोई भी इसे बेहतर समझा सकता है? o.o –