2012-05-05 16 views
5

टिप्पणियों में Scala Sink or Swim जोश सरेथ ने स्कैला कोड में समस्याओं के कारण के रूप में गैर-विधि-स्थानीय युद्धों को बुलाया।स्कैला में एक गैर-विधि-स्थानीय var क्या है?

यह पृष्ठ non-method-local vars वाक्यांश के लिए एकमात्र Google हिट है, तो इसका क्या अर्थ है, और समस्या क्या है?

उत्तर

7

एक विधि स्थानीय चर एक विधि के दायरे में घोषित एक स्थानीय चर है।

परिणामस्वरूप गैर-विधि-स्थानीय चर वर्ग स्कोप जैसे व्यापक क्षेत्र के साथ एक चर होना चाहिए।

यह सुनिश्चित नहीं कर सकता कि कोई क्यों कहेंगे कि वे समस्याग्रस्त हैं। शायद यह इस तथ्य के कारण है कि वे वस्तुओं में एक परिवर्तनीय स्थिति पेश करते हैं।

+3

परिवर्तनीय के दायरे को कम करने की संभावना कम है कि आप इसे गड़बड़ करते हैं। – ziggystar

+0

विधि-स्थानीय चर विधि के बाहर से संदर्भित रूप से पारदर्शी हैं, जिसका अर्थ है कि वे विधि के बाहर कहीं भी समस्याएं नहीं पैदा कर सकते हैं। –

+0

तो गैर-विधि-स्थानीय वर्र्स फ़ील्ड हैं। या अन्य वहाँ अन्य प्रकार के चर जो गैर-विधि-स्थानीय हैं? –

3

गैर-विधि-स्थानीय वर्र्स के साथ समस्या यह है कि वे एक वर्ग/वस्तु के लिए परिवर्तनीय राज्यों को पेश करते हैं। यह ऐसा कुछ है जिसे आप कर सकते हैं जो आप कर सकते हैं, क्योंकि स्कैला एक कार्यात्मक भाषा भी है। (हास्केल वैरिएबल जैसे शुद्ध कार्यात्मक भाषाओं में वर्जित है।) वे चरम पर काम करते समय और भी अधिक समस्याएं उत्पन्न करना शुरू करते हैं।

+0

मैंने परिभाषा के लिए एओबोब का जवाब स्वीकार कर लिया है, लेकिन समस्या के लिए आपके साथ सहमत हैं! –

+0

हां उसकी परिभाषा अच्छी है। –

संबंधित मुद्दे