आधिकारिक जवाब
बेहतर दृश्यता के लिए, यहाँ मैड्स टॉर्गेसेन की एक टिप्पणी है जो C # 8 ब्लॉग पोस्ट के इस डिज़ाइन निर्णय को समझाती है :
हमने पायथन का अनुसरण करने का फैसला किया जब यह शुरुआत से और अंत से अंकगणित की बात आती है। 0
पहला तत्व (हमेशा की तरह), और ^0
"लंबाई" तत्व, यानी अंत में एक सही है। इस तरह से आपको एक सरल रिश्ता मिलता है, जहां शुरुआत से ही एक तत्व की स्थिति और अंत से इसकी स्थिति लंबाई के बराबर होती है। x
में ^x
आप क्या लंबाई से घटाया है | यदि आप गणित किया था अपने आप को है।
-
नई टोपी ( ^
) ऑपरेटर के बजाय माइनस ( ) का उपयोग क्यों नहीं करें ? यह मुख्य रूप से पर्वतमाला के साथ करना है। फिर से पायथन और अधिकांश उद्योग को ध्यान में रखते हुए, हम चाहते हैं कि हमारी रेंज शुरुआत में समावेशी हो, अंत में अनन्य हो। आप क्या कहते हैं कि सूचकांक एक सीमा के अंत तक सभी तरह से जाना चाहिए? C # में उत्तर सरल है: अंत तक x..^0
जाता है x
। पायथन में, कोई स्पष्ट सूचकांक नहीं है जो आप दे सकते हैं: -0
काम नहीं करता है, क्योंकि यह 0
पहले तत्व के बराबर है ! तो अजगर में, आप अंत सूचकांक बंद छोड़ने के लिए पूरी तरह से एक सीमा है कि अंत करने के लिए चला जाता है व्यक्त करने के लिए है: x..
। यदि सीमा के अंत की गणना की जाती है, तो आपको उस मामले में विशेष तर्क रखने के लिए याद रखने की आवश्यकता है जो इसके लिए आता है 0
। जैसे x..-y
, जहां मेंy
गणना की गई और बाहर आ गया 0
। यह एक आम उपद्रव और कीड़े का स्रोत है।
अंत में, ध्यान दें कि सूचकांक और श्रेणियां .NET / C # में प्रथम श्रेणी के प्रकार हैं। उनका व्यवहार उस चीज़ से जुड़ा नहीं है जो उन्हें लागू किया जाता है, या यहां तक कि एक अनुक्रमणिका में उपयोग किया जाता है। आप इंडेक्स लेने वाले अपने खुद के इंडेक्सर को पूरी तरह से परिभाषित कर सकते हैं और एक और जो लेता है Range
- और हम ऐसे इंडेक्सर्स को शामिल करने जा रहे हैं उदा Span
। लेकिन आपके पास ऐसे तरीके भी हो सकते हैं जो उदाहरण के लिए रेंज लेते हैं।
मेरा जवाब
मुझे लगता है कि यह उस क्लासिक वाक्यविन्यास से मेल खाता है जिसका हम उपयोग करते हैं:
value[^1] == value[value.Length - 1]
यदि यह 0 का उपयोग करता है, तो यह भ्रामक होगा जब दो वाक्यविन्यासों का उपयोग साइड-बाय-साइड किया जाता है। इस तरह इसका संज्ञानात्मक भार कम होता है।
पायथन जैसी अन्य भाषाएं भी इसी सम्मेलन का उपयोग करती हैं।
[beginInclusive, endExclusive)
। यह एक आम सम्मेलन है।