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

रूबी 3.4 रिलीज हाइलाइट्स: प्रमुख विशेषताएं और अपडेट

रूबी परंपरा के अनुसार, कोर टीम ने 25 दिसंबर, 2024 को रूबी 3.4 जारी किया! अगर आप हमारी तरह रूबी से प्यार करते हैं, तो आप शायद सोच रहे होंगे कि रूबी 3.4 में क्या नया है। इस रिलीज में कोई बड़े बदलाव नहीं हैं, लेकिन आप कुछ वास्तव में अच्छी चीजों के बारे में जानना चाहेंगे।

रूबी 3.4 रिलीज हाइलाइट्स: प्रमुख विशेषताएं और अपडेट

आइए पहले कुछ भाषा परिवर्तनों में खुदाई करें।

भाषा परिवर्तन

भाषा परिवर्तन अधिकांश रूबी डेवलपर्स के लिए सबसे तुरंत प्रासंगिक परिवर्तन हैं। आइए उनमें से प्रत्येक पर एक त्वरित नज़र डालें!

फ्रोज़न स्ट्रिंग लिटरल्स

अगर आपने थोड़ी देर के लिए भी रूबी लिखी है, तो आपने शायद एक फाइल देखी होगी जो इससे शुरू होती है:

# frozen_string_literal: true

ऊपर दिया गया उदाहरण एक मैजिक कमेंट है, और इसका वास्तव में रूबी इंटरप्रेटर के लिए अर्थ है! यह कमेंट इंटरप्रेटर को इस फाइल में प्रत्येक स्ट्रिंग को ऐसे मानने के लिए कहता है जैसे कि उस पर freeze कहा गया हो। यदि आप इस मैजिक कमेंट वाली फाइल में एक स्ट्रिंग को संशोधित करने का प्रयास करते हैं, तो आपको एक रनटाइम त्रुटि मिलेगी।

रूबी 3.4 में, स्ट्रिंग्स डिफ़ॉल्ट रूप से ऐसे कार्य करेंगी जैसे वे फ्रोज़न हैं। उन्हें बदलने का प्रयास एक त्रुटि के बजाय एक डिप्रिकेशन वार्निंग का परिणाम देगा। रूबी का एक भविष्य का संस्करण डिफ़ॉल्ट फ्रोज़न स्ट्रिंग लिटरल्स को लागू करेगा यदि आप उन्हें बदलने का प्रयास करते हैं तो एक अपवाद उठाकर। यह संक्रमणकालीन अवधि रूबी डेवलपर्स को अपने ऐप्स को माइग्रेट करने का समय देगी।

डिफ़ॉल्ट ब्लॉक पैरामीटर

रूबी 3.4 छोटे कोड ब्लॉक्स को क्लीनर बनाने के लिए एक डिफ़ॉल्ट ब्लॉक पैरामीटर पेश करता है।

रूबी 2.7 से पहले, each मेथड के साथ एक सरणी के प्रत्येक तत्व को प्रिंट करना ऐसा दिखता था:

[1, 2, 3].each { |item| puts item }

रूबी 2.7 ने उन्हें नाम देने की आवश्यकता को हटाने के लिए नंबरेड पैरामीटर्स पेश किए। रूबी 2.7 के बाद, आप वही कोड इस तरह लिख सकते थे:

[1, 2, 3].each { puts _1 }

रूबी 2.7 का सुधार अधिक सीधा है लेकिन बिल्कुल स्पष्ट नहीं। यदि आप इस रूबी सिंटैक्स से अपरिचित हैं, तो आप यह समझने के लिए संघर्ष कर सकते हैं कि यहां क्या हो रहा है। रूबी 3.4 वही काम करने का एक और बेहतर तरीका पेश कर रहा है:

[1, 2, 3].each { puts it }

कीवर्ड स्प्लैटिंग nil

रूबी 3.4 से पहले के संस्करणों में, डबल स्प्लैट ऑपरेटर (**) का उपयोग nil के साथ TypeError उठाता था। यह एक तरह से समझ में आता था क्योंकि nil को अंतर्निहित रूप से हैश में परिवर्तित नहीं किया जा सकता था।

रूबी 3.4 इसमें एक सरल परिवर्तन प्रदान करता है - यह nil को अंतर्निहित रूप से हैश में परिवर्तित करता है। nil पर ** कॉल करना ** को खाली हैश पर कॉल करने जैसा होगा।

कोर क्लास अपडेट्स

कोर क्लास अपडेट्स रूबी डेवलपर्स के लिए भाषा परिवर्तनों जितने तुरंत प्रासंगिक नहीं हैं, लेकिन वे निश्चित रूप से समझने लायक हैं!

Exception#set_backtrace

रूबी इश्यू ट्रैकर पर एक फीचर अनुरोध ने इस परिवर्तन से पहले रूबी 3.4 में स्ट्रिंग्स की एक सरणी के साथ बैकट्रेस सेट करने को "हानिकारक" बताया। अपवाद ने पहले #backtrace_locations पर nil लौटाया।

रूबी 3.4 में, Exception#set_backtrace एक Thread::Backtrace::Location सरणी स्वीकार करेगा ताकि आप एक Backtrace इंस्टेंस को पुनर्निर्माण कर सकें और एक पूरी तरह से कार्यशील अपवाद प्राप्त कर सकें।

Range#size

Range#size का रूबी 3.4 में भी नया व्यवहार है। यदि वह रेंज जिस पर size कहा जा रहा है, पुनरावृति योग्य नहीं है, तो रूबी अब एक TypeError फेंकेगा। यह व्यवहार में एक छोटा सा परिवर्तन है जिसे आप केवल तभी नोटिस करेंगे यदि आप रेंज के एक छोटे उपसमूह पर size कॉल कर रहे हैं।

रूबी 3.4 में अन्य नए परिवर्तन

रूबी 3.4 में एक और छोटा परिवर्तन उन मेथड्स के लिए है जिन्हें एक ब्लॉक पास किया जाता है जिसका वे उपयोग नहीं करते। वर्बोज मोड में चलने पर, रूबी अब एक चेतावनी फेंकेगा यदि आप एक ब्लॉक को एक मेथड में पास करते हैं जो ब्लॉक का उपयोग नहीं करता।

आप यह सुनकर भी खुश हो सकते हैं कि रूबी 3.4 एक कार्यान्वयन पुनर्लेखन के कारण Array.each के प्रदर्शन में सुधार करता है!

अंत में, एक और अपडेट यह है कि त्रुटि संदेश और बैकट्रेस कैसे प्रदर्शित किए जाते हैं। रूबी अब प्रासंगिक होने पर बैकटिक्स के बजाय सिंगल कोट्स का उपयोग करेगा और एक मेथड नाम से पहले एक क्लास नाम प्रदर्शित करेगा।

रूबी 3.4 में अपग्रेड करना

अधिकांश लोगों के लिए रूबी 3.4 में अपग्रेड करना एक बड़ा काम नहीं होना चाहिए। सबसे श्रम-गहन हिस्सा उन सभी अनावश्यक फ्रोज़न स्ट्रिंग मैजिक कमेंट्स को हटाना होगा! रूबी 3.4 में नया सब कुछ का लाभ उठाने के लिए अपग्रेड करने के लिए समय निकालना लाभांश देगा, इसलिए देरी न करें!

और मत भूलें — अधिक रूबी समाचार और यहां तक कि इस तरह के ट्यूटोरियल अपने इनबॉक्स में प्राप्त करने के लिए, हनीबैजर न्यूज़लेटर के लिए साइन अप करें!

  1. C ग्राफिक्स का उपयोग करके फ्लड फिल एल्गोरिदम C ग्राफिक्स का उपयोग करके फ्लड फिल एल्गोरिदम

    अवधारणा दिए गए आयत के संबंध में, हमारा कार्य इस आयत को फ्लड फिल एल्गोरिदम लागू करके भरना है। इनपुट rectangle(left = 50, top = 50, right = 100, bottom = 100) floodFill(a = 55, b = 55, NewColor = 12, OldColor = 0) आउटपुट विधि // एक पुनरावर्ती फ़ंक्शन जो पिछले रंग OldColor को (a, b) पर और (a, b) के सभ

  1. Python के Matplotlib का उपयोग करके इमेज को रीड्रॉ कैसे करें? Python के Matplotlib का उपयोग करके इमेज को रीड्रॉ कैसे करें?

    Matplotlib में इमेज या प्लॉट को रीड्रॉ करना एनिमेशन या इंटरैक्टिव विज़ुअलाइज़ेशन बनाने के लिए आवश्यक होता है। fig.canvas.draw() और plt.pause() के संयोजन से इसे प्राप्त किया जा सकता है। चरण फिगर का आकार सेट करें और पैडिंग समायोजित करें। नया फिगर बनाएं या मौजूदा को सक्रिय करें। gca() मेथड से वर्तमान

  1. RedisInsight: Redis डेवलपर्स के लिए 5 आवश्यक लाभ RedisInsight: Redis डेवलपर्स के लिए 5 आवश्यक लाभ

    Redis के साथ एप्लिकेशन बनाने वाले डेवलपर्स के लिए, RedisInsight एक हल्का मल्टी-प्लेटफॉर्म मैनेजमेंट विज़ुअलाइज़ेशन टूल है जो आपको एक ही उपयोग में आसान वातावरण में अपने एप्लिकेशन क्षमताओं को डिज़ाइन, विकसित और ऑप्टिमाइज़ करने में मदद करता है। RedisInsight Redis डेटाबेस के लिए एक सहज और कुशल GUI प्रद