मुझे एक विशिष्ट प्रकार के फ़ंक्शन के लिए उचित शब्दावली की आवश्यकता है।कोई साइड इफेक्ट्स के साथ एक निर्धारिक कार्य के लिए शब्दावली?
मान लीजिए कि आप अपने SQL डेटाबेस में कोई फ़ंक्शन लिखते हैं, जिसका इनपुट और आउटपुट डेटाबेस लेनदेन के दायरे में निहित है।
यही है, यदि आप इस फ़ंक्शन को डेटाबेस लेनदेन के दायरे में कहते हैं, तो फ़ंक्शन द्वारा उपयोग किए गए सभी डेटा एक ही दायरे में उपलब्ध हैं। यह डेटाबेस तालिका से पूछताछ कर सकता है, लेकिन यह फाइल सिस्टम से फ़ाइल नहीं पढ़ सकता है, या एक वेब साइट पिंग नहीं कर सकता है। यदि आप REPEATABLE READ
अलगाव के साथ एक ही लेनदेन के भीतर दो बार फ़ंक्शन को कॉल करते हैं, तो आपको भी वही परिणाम मिलना चाहिए, भले ही आपको एक ही परिणाम मिलना चाहिए अन्य ग्राहक डेटाबेस में परिवर्तन कर रहे हैं।
इसी प्रकार, उसी लेन-देन के दायरे को छोड़कर फ़ंक्शन का कोई साइड इफेक्ट नहीं होता है। डेटाबेस लेनदेन के दायरे से बाहर राज्य में परिवर्तन की अनुमति नहीं है। फ़ंक्शन को ईमेल नहीं भेजना चाहिए, न ही फाइल सिस्टम को लिखना चाहिए, न ही memcached
आदि में कोई मान संग्रहीत करना चाहिए। यदि फ़ंक्शन डेटाबेस के भीतर डेटा बदलता है, तो ठीक है क्योंकि अगर कॉलिंग लेनदेन वापस लुढ़का जाता है, तो फ़ंक्शन के प्रभाव होते हैं भी।
फ़ंक्शन के तर्क ठीक हैं, क्योंकि वे मूल रूप से स्थिरांक के रूप में उपयोग किए जाते हैं।
इस प्रकार के फ़ंक्शन के लिए उचित अवधि क्या होगी? "निर्धारक" वास्तव में पर्याप्त विशिष्ट नहीं लगता है। आप इस वर्ग के कार्य का वर्णन कैसे करेंगे?
आपके उत्तरों के लिए धन्यवाद, लेकिन उनमें से कोई भी बिल्कुल मेरे मन में नहीं था। बेवकूफ निकटतम हो जाता है, इसलिए मैंने इसे स्वीकार किए गए उत्तर के रूप में चिह्नित किया। लेकिन आप में से प्रत्येक ने मुझ पर एक उपेक्षा प्राप्त की है।
शुद्ध कार्यों कोई दुष्प्रभाव, और उनके परिणाम उनके तर्कों पर आधारित होता है। नतीजे दिए गए परिणाम हमेशा समान होते हैं। यह काम नहीं करता है क्योंकि मेरे पास दिमाग में डेटाबेस फ़ंक्शन डेटा की स्थिति पर आधारित हो सकते हैं, और फ़ंक्शन डेटा की स्थिति को भी प्रभावित कर सकता है।
बेवकूफ कार्य डेटा की स्थिति के आधार पर परिणाम लौटा सकता है, और डेटा की स्थिति को देखते हुए परिणाम हमेशा समान होता है। लेकिन यह मेरे मन में जो कुछ भी है उसके लिए काम नहीं करता है; एक बेवकूफ कार्यों के प्रभावों के परिणामस्वरूप एक अपरिवर्तनीय परिणाम हो सकता है इससे कोई फ़र्क नहीं पड़ता कि फ़ंक्शन को कितनी बार बुलाया जाता है। लेकिन लेनदेन अलगाव के भीतर किए गए परिवर्तनों और उस दायरे से बाहर किए गए परिवर्तनों के बीच कोई अंतर नहीं है।
मुझे लगता है कि वह उससे कुछ मजबूत दिख रहा है; कम से कम, उनके द्वारा प्रदान किए गए सभी स्कोपिंग विवरणों के संबंध में, जो idempotency के लिए प्रासंगिक नहीं हैं। – MarkusQ
नहीं, मुझे नहीं लगता कि उसका कार्य अपने परिणामों पर फ़ंक्शन को कॉल करने के बारे में कुछ भी था ... जो कि बेवकूफता की परवाह करता है। – Varkhan
@ वारखन, आप बेवकूफ की गणित की भावना का उपयोग कर रहे हैं, लेकिन एस लॉट प्रोग्रामिंग में सामान्य परिभाषा का उपयोग कर रहा है। उसका लिंक पढ़ें। – RossFabricant