Ruby

Ruby में %i और %I को समझना

Spread the love

विषयसूची

  1. Ruby में %i और %I में क्या अंतर है?
  2. %i बनाम %I का उपयोग कब करें
  3. उत्तम अभ्यास
  4. सामान्य प्रश्न

Ruby में %i और %I में क्या अंतर है?

Ruby में, %i और %I दोनों ही ऐरे लिटरल्स हैं जिनका उपयोग प्रतीकों के ऐरे बनाने के लिए किया जाता है। प्रतीक हल्के, अपरिवर्तनीय ऑब्जेक्ट होते हैं जिनका उपयोग अक्सर हैश कुंजियों या पहचानकर्ताओं के रूप में किया जाता है। मुख्य अंतर यह है कि वे कैपिटलाइज़ेशन को कैसे संभालते हैं:

  • %i: सभी इनपुट को लोअरकेस मानता है। कोष्ठक के अंदर के अपरकेस अक्षरों की व्याख्या सचमुच स्ट्रिंग्स के रूप में की जाती है, फिर उन्हें प्रतीकों में परिवर्तित कर दिया जाता है। यदि आप कैपिटलाइज़ेशन को संरक्षित करना चाहते हैं तो इससे अप्रत्याशित परिणाम हो सकते हैं।
  • %I: कैपिटलाइज़ेशन को संरक्षित करता है। अपरकेस और लोअरकेस अक्षरों दोनों की व्याख्या सही ढंग से प्रतीकों के रूप में की जाती है, मूल केसिंग को बनाए रखते हुए।

यहाँ अंतर को दर्शाता एक उदाहरण दिया गया है:


lowercase_symbols = %i[one Two three]
puts lowercase_symbols # => [:one, :"Two", :three]  # ध्यान दें: "Two" एक स्ट्रिंग सिंबल है

uppercase_symbols = %I[one Two three]
puts uppercase_symbols # => [:one, :Two, :three]    # सभी प्रतीक हैं

%i बनाम %I का उपयोग कब करें

%i और %I के बीच चुनाव आपकी आवश्यकताओं पर निर्भर करता है:

  • %i का उपयोग तब करें जब आपके प्रतीकों के लिए केस संवेदनशीलता अप्रासंगिक हो और आप लोअरकेस प्रतीकों के ऐरे बनाने का एक संक्षिप्त तरीका चाहते हैं। इससे अक्सर पठनीयता में सुधार होता है।
  • %I का उपयोग तब करें जब केस संवेदनशीलता मायने रखती है (जैसे, स्थिरांक या एनम का प्रतिनिधित्व करना जहाँ :CONSTANT :constant से अलग है)। यह सुनिश्चित करता है कि आपके प्रतीकों का कैपिटलाइज़ेशन सटीक रूप से दर्शाया गया है।

उत्तम अभ्यास

  • संगति: एक लिटरल चुनें और किसी दिए गए प्रोजेक्ट में उससे चिपके रहें ताकि भ्रम से बचा जा सके।
  • पठनीयता: लंबी सूचियों के लिए, उन्हें छोटे, अधिक प्रबंधनीय ऐरे में तोड़ दें।
  • नामकरण परंपराएँ: पठनीयता बढ़ाने के लिए बहु-शब्द प्रतीकों के लिए अंडरस्कोर (जैसे, %i[first_name last_name]) का उपयोग करें।
  • अस्पष्टता से बचें: यदि आप कैपिटलाइज़ेशन के बारे में अनिश्चित हैं, तो %I आम तौर पर सुरक्षित है।

सामान्य प्रश्न

  • क्या मैं स्ट्रिंग्स के अलावा अन्य डेटा प्रकारों का उपयोग कर सकता हूँ? नहीं, इनपुट की व्याख्या हमेशा स्ट्रिंग्स के रूप में की जाती है, फिर प्रतीकों में परिवर्तित कर दिया जाता है।
  • यदि मैं सीधे किसी प्रतीक का उपयोग करता हूँ तो क्या होता है? इसे स्ट्रिंग के रूप में माना जाता है, संभावित रूप से परिणामी प्रतीक के कैपिटलाइज़ेशन को बदल दिया जाता है।
  • क्या कोई प्रदर्शन अंतर है? इन लिटरल्स और मैन्युअल रूप से ऐरे बनाने के बीच प्रदर्शन अंतर नगण्य है।

प्रातिक्रिया दे

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *