मैं सिर्फ स्कैला में प्रोग्राम करना सीख रहा हूं। मेरे पास कार्यात्मक प्रोग्रामिंग में कुछ अनुभव है, क्योंकि मेरे पास ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग है। मेरा प्रश्न सरल, अभी तक मुश्किल है:स्कैला अपरिवर्तनीय बनाम परिवर्तनीय बनाम। किसी को क्या जाना चाहिए?
स्कैला में कौन सी संरचनाओं का उपयोग किया जाना चाहिए? क्या हमें केवल अपरिवर्तनीय रहना चाहिए, उदाहरण के लिए। इसके माध्यम से पुनरावृत्ति करके संशोधित सूचियां और एक साथ एक नया चिपकाएं, या mutables के लिए जाओ? उस पर आपकी राय क्या है, प्रदर्शन पहलुओं, स्मृति संबंधी पहलुओं, ...
मुझे एक कार्यात्मक शैली में प्रोग्राम करने की संभावना है, लेकिन यह अक्सर ऐसी चीजों को करने के प्रयासों की एक पागल राशि तक फैलता है जो mutables का उपयोग करके आसानी से किया। क्या यह स्थिति निर्भर है, क्या उपयोग करें?
यह प्रश्न बहुत सामान्य है। मैं उन समस्याओं की पहचान करने की अत्यधिक अनुशंसा करता हूं जो आपको लगता है कि काम करने के लिए "पागल" प्रयास की आवश्यकता है, और उनके बारे में प्रश्न पूछना। आप नई कार्यात्मक तकनीकों को सीख सकते हैं जो प्रयास को उचित लगते हैं - या परिवर्तनीय डेटा का उपयोग करने से भी आसान! –
ऐसे अन्य प्रश्न हैं जो इसे संबोधित करते हैं, और यह प्रश्न एक अच्छा जवाब स्वीकार करने के लिए बहुत अस्पष्ट या व्यापक है, लेकिन संक्षेप में: सबसे अच्छा काम करता है _overall_। अंगूठे के नियम के रूप में, यदि कोई गंभीर कमी नहीं होती है तो एक अपरिवर्तनीय समाधान का उपयोग करें; उसके बाद, एक उत्परिवर्तनीय व्यक्ति का पक्ष लें जहां परस्पर राज्य स्थानीय संदर्भ से बच नहीं जाता है (यानी आप जिस विधि का उपयोग कर रहे हैं), उसके बाद एक जहां उत्परिवर्तनीय राज्य कक्षा में कम से कम छिपा हुआ है (इसलिए इसके बारे में चिंता करने की आवश्यकता नहीं है _except_ एकाधिक थ्रेड का उपयोग करते समय - और थ्रेड सुरक्षा की कमी दस्तावेज)। अपरिवर्तनीयता का उपयोग करें क्योंकि यह आपकी मदद करता है, जब यह दर्द होता है! –
आसान/पागल अनुपात पर: एक धागे से निपटने के दौरान उत्परिवर्तन अक्सर प्रोग्राम और डीबग करना आसान होता है और एकाधिक धागे का उपयोग करते समय प्रोग्राम और डीबग करना बेहद मुश्किल हो जाता है। –