रूबी का एक नया संस्करण नई सुविधाओं और प्रदर्शन में सुधार के साथ आ रहा है।
क्या आप परिवर्तनों के साथ बने रहना चाहेंगे?
आइए एक नज़र डालते हैं!
अंतहीन रेंज
रूबी 2.5 और पुराने संस्करण पहले से ही अंतहीन श्रेणी के एक रूप का समर्थन करते हैं (Float::INFINITY
के साथ) ), लेकिन रूबी 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]
आप और कौन से उदाहरण दे सकते हैं?
गणना करने योग्य ::अंकगणितीय अनुक्रम
रूबी 2.6 में एक नई तरह की एन्यूमरेबल ऑब्जेक्ट पेश की गई है।
मैं बात कर रहा हूँ Enumerable::ArithmethicSequence
।
अभी दो विधियां हैं जो आपको देती हैं एक ArithmethicSequence
:
- श्रेणी#चरण
- संख्यात्मक#चरण
इसमें क्या खास है?
एक ArithmethicSequence
जानता है कि कितने तत्व हैं, पहला तत्व क्या है और अंतिम तत्व क्या है।
उदाहरण :
(1..10).step(2).first # 1 (1..10).step(2).last # 9
ये first
&last
रूबी 2.6 से पहले विधियाँ उपलब्ध नहीं हैं और इसीलिए ArithmethicSequence
अभी मौजूद है!
एक और अंतर :
(1..10).step(2) == (1..10).step(2) # false - Ruby 2.5 (and older) (1..10).step(2) == (1..10).step(2) # true - Ruby 2.6
अंकगणित अनुक्रमों की तुलना 2.6 में एक दूसरे से की जा सकती है।
एकाधिक तर्कों के साथ हैश मर्ज करें
यदि आप एकाधिक हैश को मर्ज करना चाहते हैं ताकि आप उन्हें एक में जोड़ सकें…
आप यह कर सकते हैं :
a = { a: 1 } b = { b: 2 } c = { c: 3 } a.merge(b).merge(c) # {:a=>1, :b=>2, :c=>3}
रूबी 2.6 एक नया तरीका जोड़ता है :
a.merge(b, c) # {:a=>1, :b=>2, :c=>3}
वही परिणाम, लेकिन आपको केवल एक बार विधि को कॉल करना होगा!
नया अपवाद विकल्प
जब आप Integer
. जैसी रूपांतरण विधि का उपयोग करते हैं यदि मान परिवर्तित नहीं किया जा सकता है तो आपको एक अपवाद मिलेगा।
उदाहरण :
Integer("a") # ArgumentError (invalid value for Integer(): "a")
रूबी 2.6 एक नया exception
जोड़ता है कीवर्ड तर्क:
- पूर्णांक ()
- फ्लोट ()
- तर्कसंगत ()
- जटिल ()
आप इस कीवर्ड से इन विधियों के व्यवहार को नियंत्रित कर सकते हैं।
उदाहरण :
Integer("a", exception: false) # nil
रैंडम.बाइट्स
यदि आपको कुछ यादृच्छिक बाइट्स की आवश्यकता है, तो रूबी 2.6 एक नया bytes
जोड़ता है Random
. के लिए विधि कक्षा।
यहां एक उदाहरण दिया गया है :
Random.bytes(10) # "\xCD\r\xE6Wz\xBA)\x02\xC4\xDB"
यह पूरी तरह से नई कार्यक्षमता नहीं है क्योंकि यह हमेशा securerandom
. के माध्यम से उपलब्ध है मॉड्यूल।
require 'securerandom' SecureRandom.bytes(10)
फिर इस नए तरीके से परेशान क्यों?
Random.bytes
गति के लिए सुरक्षा का व्यापार करता है, यह SecureRandom
. से 8 गुना तेज है ।
रेंज#%
एक नया %
विधि को Range
में जोड़ दिया गया है रूबी 2.6 में।
उदाहरण :
((0..) % 2).take(5) # [0, 2, 4, 6, 8]
यह तरीका Range#step
. के बराबर है ।
ट्रेसप्वाइंट#पैरामीटर
TracePoint
क्लास आपको मेथड कॉल्स, क्लास डेफिनिशन्स और थ्रेड्स जैसी घटनाओं का पता लगाने में मदद करता है।
रूबी 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]]]
क्षणिक ढेर
क्षणिक ढेर अल्पकालिक वस्तुओं के लिए एक प्रदर्शन सुधार है जिसका उद्देश्य स्मृति विखंडन की समस्या को कम करना और मॉलोक को धीमी कॉल करना है।
<ब्लॉकक्वॉट>मॉलोक है कि रूबी दुभाषिया (और अधिकांश सी प्रोग्राम) मेमोरी . का अनुरोध कैसे करते हैं ऑपरेटिंग सिस्टम से।
समाचार प्रविष्टि के अनुसार, हम 6-7% की गति देख रहे हैं।
मैंने कुछ बेंचमार्क चलाए:
ऐसा लगता है कि 10 तत्वों से छोटे many कई हैश बनाते समय यह सबसे प्रभावी है ।
इन परिणामों के आधार पर रूबी 2.6 (पूर्वावलोकन 3) में बड़े हैश धीमे होते हैं।
अन्य वस्तुएं जो क्षणिक हीप से लाभान्वित हो सकती हैं :
- सरणी
- संरचना
- नियमित वस्तुएं (आपके द्वारा बनाई गई कक्षाओं से)
सरणी#संघ और सरणी#अंतर
दो नए तरीके, union
&difference
Array
. में जोड़े जाते हैं रूबी 2.6 में कक्षा।
उदाहरण :
[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]
इन नए तरीकों में कई तर्क होते हैं।
सारांश
कम समय में बेहतर कोड लिखने में आपकी मदद करने के लिए रूबी 2.6 नई उपयोगी सुविधाओं के साथ आ रहा है। प्रदर्शन से संबंधित एक और नई विशेषता, एमजेआईटी (विधि आधारित जस्ट-इन-टाइम कंपाइलर) को एक समर्पित लेख में शामिल किया जाएगा।
रूबी 2.6 दिसंबर 25, 2018 में रिलीज़ होने की उम्मीद है ।
यदि आप परिवर्तनों के साथ बने रहना चाहते हैं, अपने रूबी कौशल में सुधार करना चाहते हैं और एक भयानक रूबी डेवलपर बनना चाहते हैं, तो आज ही मेरे रूबी न्यूज़लेटर में शामिल होना न भूलें।
पढ़ने के लिए धन्यवाद!