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

रूबी में 9 नई सुविधाएँ 2.6

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

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

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

अंतहीन रेंज

रूबी 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 कई हैश बनाते समय यह सबसे प्रभावी है ।

रूबी में 9 नई सुविधाएँ 2.6

इन परिणामों के आधार पर रूबी 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 में रिलीज़ होने की उम्मीद है ।

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

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


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

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

  1. नई SQL सर्वर 2017 सुविधाएँ

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

  1. Windows 8.1 Update 1 नई सुविधाएं जोड़ें

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