Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

Ruby 2.6 में 9 प्रमुख संवर्द्धन का अन्वेषण

Ruby का एक नया संस्करण नई सुविधाओं और प्रदर्शन सुधारों के साथ आ रहा है।

क्या आप परिवर्तनों के साथ बने रहना चाहेंगे?

आइए एक नज़र डालते हैं!

अंतहीन रेंज (Endless Ranges)

Ruby 2.5 और पुराने संस्करण पहले से ही अंतहीन रेंज का एक रूप (Float::INFINITY के साथ) का समर्थन करते हैं, लेकिन Ruby 2.6 इसे अगले स्तर पर ले जाता है।

नई अंतहीन रेंज ऐसी दिखती है:

 (1..) 

यह एक नियमित रेंज से अलग है क्योंकि इसमें (1..10) की तरह अंतिम मान नहीं होता।

उदाहरण उपयोग:

 ["a", "b", "c"].zip(1..) # [["a", 1], ["b", 2], ["c", 3]] [1,2,3,4,5][1..] # [2, 3, 4, 5] (1..).step(5).take(100) # [1, 6, 11, 16, 21, 26, 31, 36, 41, 46] 

आप और क्या उदाहरण सोच सकते हैं?

Enumerable::ArithmethicSequence

Ruby 2.6 में एक नए प्रकार का Enumerable ऑब्जेक्ट पेश किया गया है।

मैं Enumerable::ArithmethicSequence की बात कर रहा हूं।

अभी दो मेथड्स हैं जो आपको एक ArithmethicSequence देते हैं:

  • Range#step
  • Numeric#step

इसमें क्या खास है?

एक ArithmethicSequence जानता है कि कितने तत्व हैं, पहला तत्व क्या है और अंतिम तत्व क्या है।

उदाहरण:

 (1..10).step(2).first # 1 (1..10).step(2).last # 9 

ये first और last मेथड्स Ruby 2.6 से पहले उपलब्ध नहीं थे और इसीलिए ArithmethicSequence अब मौजूद है!

एक और अंतर:

 (1..10).step(2) == (1..10).step(2) # false - Ruby 2.5 (और पुराने) (1..10).step(2) == (1..10).step(2) # true - Ruby 2.6 

Ruby 2.6 में अंकगणितीय अनुक्रमों की तुलना की जा सकती है।

एकाधिक आर्गुमेंट्स के साथ हैश मर्ज करें

यदि आप कई हैशेज को मर्ज करना चाहते हैं ताकि उन्हें एक में जोड़ा जा सके...

आप यह कर सकते हैं:

 a = { a: 1 } b = { b: 2 } c = { c: 3 } a.merge(b).merge(c) # {:a=>1, :b=>2, :c=>3} 

Ruby 2.6 एक नया तरीका जोड़ता है:

 a.merge(b, c) # {:a=>1, :b=>2, :c=>3} 

समान परिणाम, लेकिन आपको मेथड को केवल एक बार कॉल करना होगा!

नया अपवाद विकल्प

जब आप Integer जैसे रूपांतरण मेथड का उपयोग करते हैं तो यदि मान को परिवर्तित नहीं किया जा सकता तो आपको एक अपवाद मिलेगा।

उदाहरण:

 Integer("a") # ArgumentError (invalid value for Integer(): "a") 

Ruby 2.6 exception कीवर्ड आर्गुमेंट जोड़ता है:

  • Integer()
  • Float()
  • Rational()
  • Complex()

आप इस कीवर्ड से इन मेथड्स के व्यवहार को नियंत्रित कर सकते हैं।

उदाहरण:

 Integer("a", exception: false) # nil 

Random.bytes

यदि आपको कुछ रैंडम बाइट्स चाहिए तो Ruby 2.6 Random क्लास में एक नया bytes मेथड जोड़ता है।

यहां एक उदाहरण है:

 Random.bytes(10) # "\xCD\r\xE6Wz\xBA)\x02\xC4\xDB" 

यह पूरी तरह से नई कार्यक्षमता नहीं है क्योंकि यह हमेशा securerandom मॉड्यूल के माध्यम से उपलब्ध रही है।

 require 'securerandom' SecureRandom.bytes(10) 

फिर इस नए मेथड से क्यों परेशान हों?

Random.bytes सुरक्षा के बदले गति देता है, यह SecureRandom से 8x तेज है।

Range#%

Ruby 2.6 में Range में एक नया % मेथड जोड़ा गया है।

उदाहरण:

 ((0..) % 2).take(5) # [0, 2, 4, 6, 8] 

यह मेथड Range#step के बराबर है।

TracePoint#parameters

TracePoint क्लास आपको मेथड कॉल्स, क्लास डेफिनिशन्स और थ्रेड्स जैसे इवेंट्स को ट्रेस करने में मदद करती है।

Ruby 2.6 एक नया parameters मेथड जोड़ता है।

इस नए मेथड के साथ आप कॉल किए जा रहे मेथड के पैरामीटर सूची को प्रिंट कर सकते हैं।

उदाहरण:

 TracePoint.trace(:call, :b_call, :c_call) do |tp| p [tp.event, tp.parameters] end def orange(a,b,c*) end orange(1,2,3) 

परिणाम:

 [:call, [[:req, :a], [:req, :b], [:rest, :c]]] 

ट्रांजिएंट हीप (Transient Heap)

ट्रांजिएंट हीप अल्पकालिक ऑब्जेक्ट्स के लिए एक प्रदर्शन सुधार है जिसका उद्देश्य मेमोरी फ्रैगमेंटेशन की समस्या और malloc के धीमे कॉल्स को कम करना है।

Malloc है कि Ruby इंटरप्रेटर (और अधिकांश C प्रोग्राम) ऑपरेटिंग सिस्टम से मेमोरी कैसे मांगते हैं।

NEWS एंट्री के अनुसार, हम 6-7% स्पीडअप देख रहे हैं।

मैंने कुछ बेंचमार्क चलाए:

ऐसा लगता है कि यह तब सबसे प्रभावी होता है जब कई हैशेज 10 तत्वों से छोटे बनाए जाते हैं।

Ruby 2.6 में 9 प्रमुख संवर्द्धन का अन्वेषण

इन परिणामों के आधार पर Ruby 2.6 (प्रीव्यू 3) में बड़े हैशेज धीमे हैं।

अन्य ऑब्जेक्ट्स जो ट्रांजिएंट हीप से लाभ उठा सकते हैं:

  • Arrays
  • Struct
  • नियमित ऑब्जेक्ट्स (आपके द्वारा बनाई गई क्लासेज से)

Array#union और Array#difference

Ruby 2.6 में Array क्लास में दो नए मेथड्स, union और difference जोड़े गए हैं।

उदाहरण:

 [1,2,3,4,5].difference([3]) # [1, 2, 4, 5] [1,2,3,4,5].union([5,6,7]) # [1, 2, 3, 4, 5, 6, 7] 

ये नए मेथड्स एकाधिक आर्गुमेंट्स लेते हैं।

सारांश

Ruby 2.6 नई उपयोगी सुविधाओं के साथ आ रहा है जो आपको कम समय में बेहतर कोड लिखने में मदद करेंगी। एक और प्रदर्शन-संबंधी सुविधा, MJIT (मेथड बेस्ड जस्ट-इन-टाइम कंपाइलर) को एक समर्पित लेख में कवर किया जाएगा।

Ruby 2.6 के 25 दिसंबर, 2018 को जारी होने की उम्मीद है।

यदि आप परिवर्तनों के साथ बने रहना चाहते हैं, अपने Ruby कौशल में सुधार करना चाहते हैं और एक शानदार Ruby डेवलपर बनना चाहते हैं तो आज ही मेरे Ruby न्यूज़लेटर से जुड़ना न भूलें।

पढ़ने के लिए धन्यवाद!


  1. Windows 10 में नोटपैड की नई विशेषताएं Windows 10 में नोटपैड की नई विशेषताएं

    Microsoft ने Windows 10 में अच्छे पुराने नोटपैड ऐप को अपडेट किया है। Windows में विनम्र नोटपैड एक बहुत ही बुनियादी टेक्स्ट एडिटर है जिसका उपयोग आप सरल दस्तावेजों के लिए कर सकते हैं। आइए नोटपैड में नई सुविधाओं पर एक नज़र डालें। पढ़ें Windows उपयोगकर्ताओं के लिए नोटपैड टिप्स और ट्रिक्स। नोटपैड नई सु

  1. SQL Server 2017 में प्रमुख संवर्द्धन खोजें SQL Server 2017 में प्रमुख संवर्द्धन खोजें

    क्या आप SQL Server के अधिक आधुनिक संस्करण में अपग्रेड करने पर विचार कर रहे हैं? क्या आप SQL Server 2016 और SQL Server 2017 के बीच चयन कर रहे हैं? यदि हां, तो मेरी सलाह है कि SQL Server 2017 में अपग्रेड करें जैसा कि मैं इस पोस्ट में बताता हूँ। SQL Server तकनीक का रिलीज़ SQL एडमिनिस्ट्रेटर और डेवलपर्स

  1. Windows 8.1 अपडेट 1 टास्कबार, माउस और स्टार्ट स्क्रीन में प्रमुख सुधार लाता है Windows 8.1 अपडेट 1 टास्कबार, माउस और स्टार्ट स्क्रीन में प्रमुख सुधार लाता है

    Microsoft ने Windows 8.1 अपडेट 1 के प्रमुख अपडेट के बारे में विवरण की घोषणा की, जो 8 अप्रैल से शुरू होगा। नई सुविधाओं में एक बेहतर टास्कबार, स्मार्ट माउस ट्वीक, और स्टार्ट स्क्रीन ट्वीक शामिल हैं जो माउस और कीबोर्ड उपयोगकर्ताओं पर ध्यान केंद्रित करते हैं। भाग I. Microsoft Windows 8.1 के प्रमुख अपड