मैं सोच रहा था कि मैं "सही" रेंज शाब्दिक डिजाइनिंग के बारे में कैसे जाऊंगा अगर मैं एक भाषा डिजाइन करने के लिए था। आपके लिए जो विवरण में श्रेणी शाब्दिक नहीं जानता है, वह 1-4 जैसे मानों की श्रेणी का प्रतिनिधित्व करता है। वे सबसे अधिक / foreach छोरों के लिए उपयोग किया जाता है
कुछ मुद्दों पर ध्यान देना चाहिए
समावेशी और अनन्य श्रेणियों के लिए समर्थन, +1 या -1 से समापन बिंदुओं तक से निपटने के लिए थोड़ा सा और त्रुटिपूर्ण लगता है।
कदम रखने के लिए समर्थन, इसलिए आप उदाहरण के लिए सम या विषम संख्या की सीमा बना सकते हैं
पठनीयता, यह स्पष्ट रूप से स्पष्ट होना चाहिए कि सीमा शाब्दिक क्या बताती है
लापरवाही, यह पूरी तरह से अस्पष्ट होना चाहिए कि सीमा शाब्दिक क्या बताती है
डिफ़ॉल्ट संभवत: समावेशी से अनन्य होना चाहिए क्योंकि ज्यादातर मामलों में इसका उपयोग सरणियों पर लूपिंग आदि के लिए किया जाता है।
वैसे भी, मैंने देखा है कि रेंज शाब्दिक का एक उदाहरण रूबी है जो एक विशेष (अंत पर) रेंज के लिए 1..3 और समावेशी (अंत पर) के लिए 1 ... 3 के रूप में है। आप 1..10.step (5) भी कर सकते हैं। सावधान विचार के बाद मुझे कुछ चीजें मिलीं जो मुझे उस दृष्टिकोण के बारे में पसंद नहीं थीं (माणिक के अपने सीमित ज्ञान से)
आप केवल अंत के लिए समावेशी और अनन्य का वर्णन कर सकते हैं। अधिकांश परिदृश्यों का वर्णन करते समय यह थोड़ा असंगत लगता है।
केवल एक अतिरिक्त द्वारा भिन्नता। यह देखने के लिए एक नुस्खा की तरह लगता है कि यह मुश्किल है कि कोई रेंज समावेशी है या अनन्य है। मैं तुम्हारे बारे में नहीं जानता, लेकिन कलंक के कुछ बनने की प्रवृत्ति है :)
श्रेणियों के लिए संकेतन की तरह विधि जोड़ना एक वर्ग के साथ शाब्दिक की धारणा को मिलाता है जो थोड़ा असंगत लगता है (भले ही श्रेणी एक वर्ग के लिए संकलित हो)
वैसे भी, अलग-अलग विकल्पों पर विचार करने के बाद। मैं यह लेकर आया था
- [५.१] ५,४,३,२,१
- [१.५.५ [ १,२,३,४]
- ] 1..5] 2,3,4,5
- [ 0..5..20] 0,5,10,15,20
इत्यादि। मुझे यह पसंद है क्योंकि [आम तौर पर एक सेट को दर्शाता है और यह थोड़े में फिट बैठता है, भले ही एक सेट के विपरीत यह आदेश दिया जाएगा।
एक बात मैं थोड़ा सा फटा हुआ हूं, हालांकि यह अनन्य / समावेशी संकेतकों को अनिवार्य बना रहा है या नहीं, यदि आप सिर्फ 1..5 लिखते हैं तो डिफ़ॉल्ट 1,2,3,4 होगा क्योंकि यह सरणियों आदि के साथ सबसे आम मामला है। यह आसान और अधिक पठनीय है, लेकिन कम विशिष्ट है और अगर आपको लिखना पड़ा [१.५.५] आप जल्दी सीखते हैं कि वे कैसे काम करते हैं।
तो आपको क्या लगता है, क्या मैंने ज्यादातर आधारों को कवर किया, कुछ को अनदेखा किया? क्या आप [] को अनिवार्य करेंगे? क्या आप अपनी प्रोग्रामिंग लैंग्वेज में रेंज लिटरल्स को अलग तरह से डिजाइन करेंगे?
उम्मीदवार
- ब्रैकेट शैली: [0..10] , कदम के साथ: [0..5..20]
- अंतराल संकेतन: [0..10) कदम के साथ: [0..5..20)
- विशेष के लिए विस्मयादिबोधक। 0 ..! 10, कदम के साथ: 0..5 ..! 20
- अलग कदम के साथ। ० ..! २०, ५
- हालाँकि, यह डिफ़ॉल्ट * 0..10 को समावेशी-समावेशी बना देगा
- वर्डी: [० से २० तक ५]
मुझे कहना होगा कि मेरा अब तक का पसंदीदा सौंदर्य 0 है! ..! 10 और 0..5 ..! 20 , मैं सिर्फ डिफ़ॉल्ट रूप से इच्छा रखता हूं। 0..10 समावेशी-अनन्य के लिए अधिक तार्किक होगा
1,5,10,15,20
गैप 4, 5, 5, 5 ?!