दिलचस्प पोस्ट
MySQL GROUP_CONCAT कुल फ़ंक्शन के लिए SPARK SQL प्रतिस्थापन क्या एसक्यूएल कथन सेरगेट करता है? कई पैरामीटर के साथ धागा WebGL बनाम कैनवास 2 डी में पैलेट आधारित ग्राफिक्स का अनुकरण करना जावा में प्रतीक्षा करें और सूचित कैसे करें? MySQL में पार्स तिथि अद्वितीय पहचानकर्ता के बिना डुप्लिकेट पंक्तियों को कैसे हटाएं स्मृति रिसाव को रोकने के लिए, जेडीबीसी ड्राइवर को जबरन ढंग से पंजीकृत नहीं किया गया है LINQ में उच्चतम तिथि के साथ ही रिकॉर्ड का चयन कैसे करें जावा: दशमलव बिंदु के बाद मैं भाग कैसे प्राप्त करूं? जावा में प्राथमिकताओं, हमेशा प्राथमिकता सहित स्थानीय चर क्यों होना चाहिए? क्या मैं किसी तरह से बीत सकता हूँ? मैं एक सिस्टम डिवाइस को प्रोग्रामैटिक रूप से अक्षम कैसे कर सकता हूं? Google App Engine में सभी डेटास्टोर को कैसे हटाएं? तत्काल प्रथम बाल तत्व प्राप्त करें

इम्प्लासिट टाइपिंग; क्यों सिर्फ स्थानीय चर?

क्या किसी को पता है या अटकलें लगाते हैं कि क्यों अंतर्निहित टाइपिंग स्थानीय चर तक सीमित है?

var thingy = new Foo(); 

पर क्यों नहीं…

 var getFoo() { return new Foo(); } 

Solutions Collecting From Web of "इम्प्लासिट टाइपिंग; क्यों सिर्फ स्थानीय चर?"

एरिक लिपर ने इस विषय पर एक संपूर्ण ब्लॉग पोस्ट किया

संक्षेप में, मुख्य समस्या यह है कि ऐसा करने के लिए सी # संकलक के एक प्रमुख पुनः वास्तुकला की आवश्यकता होगी। घोषणाएं वर्तमान में एक ही पारित तरीके से संसाधित हैं अनुमानित चर के बीच चक्र बनाने की क्षमता की वजह से इसके पास कई पास की आवश्यकता होगी। VB.net मोटे तौर पर एक ही समस्या है

जेरेड के पास अपने जवाब में शानदार लिंक है, एक शानदार विषय है।

मुझे लगता है कि यह स्पष्ट रूप से सवाल का जवाब नहीं देता है

क्यों नहीं?

 var getFoo() { return new Foo(); } 

इसके लिए कारण है:

क्या हो अगर?

 class Foo {} var GetFoo() { return GetBar(); } var GetBar() { return GetBaz(); } var GetBaz() { return new Foo(); } 

आप यह GetFoo सकते हैं कि GetFoo Foo को वापस करने जा रहा है, लेकिन आपको विधि के सभी कॉलों के माध्यम से पता लगाना पड़ेगा और इसके बच्चे केवल प्रकार का अनुमान लगाने के लिए तैयार होंगे। जैसा कि यह है कि सी # संकलक इस तरह से काम करने के लिए तैयार नहीं है इस प्रक्रिया में प्रारंभिक कोड और क्षेत्र प्रकार की आवश्यकता होती है, जो कि कोड को चलाने से पहले चला सकता है।

विशुद्ध रूप से सौंदर्य स्तर पर मैं तरीकों पर भ्रम की परिभाषाओं को भ्रमित करता हूं। इसकी एक जगह है जहां मुझे स्पष्ट रूप से हमेशा मदद मिलती है, यह आपको गलती से एक प्रकार से लौटने से पैर में अपने आत्म शूटिंग करने से बचाता है जो आपके हस्ताक्षर का कारण बनता है और एक अन्य शत प्रतिशत निर्भरता हस्ताक्षर को बदलना है। सबसे बुरे हालात में, आप किसी विधि श्रृंखला के आपके सभी हस्ताक्षर को संभवतः बदले में भी जान सकते हैं, अगर आप उस विधि के मूल्य को वापस करते हैं जो कि वस्तु का रिटर्न देता है और भाग्यशाली हो जाता है

मुझे लगता है कि रूबी की तरह गतिशील भाषाओं जैसे विभिन्न तरीकों को छोड़ दिया जाता है

क्योंकि यह करने के लिए बहुत आसान है यदि आप सभी प्रकार के अनुमानों के लिए होते हैं, तो आपको हिंडले मिल्नेर टाइप इंफॉर्मेशन सिस्टम की कुछ आवश्यकता होगी जो आपकी प्रिय सी # को हास्केल व्युत्पन्न भाषा में बना देगा।

अनिवार्य रूप से, आप जो मुद्दे पर चल रहे हैं वह है सी # (इस प्रकार अब तक) एक स्थैतिक रूप से टाइप की गई भाषा है एक स्थानीय वैरिएबल जिसे var के रूप में परिभाषित किया गया है अभी भी स्थिर रूप से टाइप किया गया है, लेकिन वाक्यविन्यास छिपा हुआ है। दूसरी ओर, जिस पर लौटने वाला तरीका है, उसके पास कई प्रभाव हैं। यह उपयोग के लिए एक इंटरफ़ेस का अधिक हो जाता है, और आप var का उपयोग करके कुछ भी प्राप्त नहीं करते हैं

आप बनाम 2010 गतिशील में बना सकते हैं

 Dynamic getFoo() { return new Foo(); } 

मुझे लगता है कि ऐसा इसलिए है क्योंकि उस निहित प्रकार का दायरा बहुत व्यापक है और इसलिए एक ही विधि के दायरे के मुकाबले समस्याओं का कारण होने की अधिक संभावना है।