কম্পিউটার টিউটোরিয়াল

রুবি 3.4 রিলিজ হাইলাইটস:মূল বৈশিষ্ট্য এবং আপডেট

রুবি ঐতিহ্য হিসাবে, মূল দল 25 ডিসেম্বর, 2024-এ রুবি 3.4 প্রকাশ করেছে! আপনি যদি আমাদের মতো রুবিকে ভালোবাসেন, আপনি সম্ভবত ভাবছেন রুবি 3.4-এ নতুন কী আছে। এই রিলিজে কোন বড় পরিবর্তন নেই, তবে আপনি কিছু সত্যিই দুর্দান্ত জিনিস সম্পর্কে সচেতন হতে চাইবেন।

রুবি 3.4 রিলিজ হাইলাইটস:মূল বৈশিষ্ট্য এবং আপডেট

চলুন প্রথমে কিছু ভাষার পরিবর্তনগুলি খতিয়ে দেখি৷

ভাষা পরিবর্তন

বেশিরভাগ রুবি ডেভেলপারদের জন্য ভাষার পরিবর্তনগুলি হল সবচেয়ে অবিলম্বে প্রাসঙ্গিক পরিবর্তন। আসুন তাদের প্রত্যেকের দিকে দ্রুত নজর দেওয়া যাক!

হিমায়িত স্ট্রিং লিটারেল

আপনি যদি অল্প সময়ের জন্য রুবি লিখে থাকেন তবে আপনি সম্ভবত একটি ফাইল দেখেছেন যা দিয়ে শুরু হয়:

# frozen_string_literal: true

উপরের উদাহরণটি হল একটি জাদু মন্তব্য , এবং এটি আসলে রুবি দোভাষীর অর্থ আছে! এই মন্তব্যটি দোভাষীকে এই ফাইলের প্রতিটি স্ট্রিংকে এমনভাবে আচরণ করতে বলে যেন এতে freeze আছে এটা ডাকা আপনি যদি এই ম্যাজিক মন্তব্যের সাথে একটি ফাইলে একটি স্ট্রিং পরিবর্তন করার চেষ্টা করেন, আপনি একটি রানটাইম ত্রুটি পাবেন৷

রুবি 3.4-এ, স্ট্রিংগুলি অভিনয় করবে যেন তারা ডিফল্টরূপে হিমায়িত হয়। সেগুলিকে পরিবর্তন করার প্রচেষ্টার ফলে একটি ত্রুটির পরিবর্তে একটি অবচয় সতর্কতা হবে৷ রুবির একটি ভবিষ্যত সংস্করণ ডিফল্ট হিমায়িত স্ট্রিং লিটারেলগুলিকে একটি ব্যতিক্রম উত্থাপন করে প্রয়োগ করবে যদি আপনি তাদের পরিবর্তন করার চেষ্টা করেন। এই ট্রানজিশনারি পিরিয়ড রুবি ডেভেলপারদের তাদের অ্যাপ মাইগ্রেট করার জন্য সময় দেবে।

ডিফল্ট ব্লক প্যারামিটার

রুবি 3.4 শর্ট কোড ব্লক ক্লিনার করতে একটি ডিফল্ট ব্লক প্যারামিটার প্রবর্তন করে৷

Ruby 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 রূপান্তরিত করে একটি হ্যাশ মধ্যে ** কল করা হচ্ছে on nil হবে কল করার মত ** একটি খালি-এ হ্যাশ।

কোর ক্লাস আপডেট

মূল ক্লাস আপডেটগুলি রুবি ডেভেলপারদের সাথে ভাষা পরিবর্তনের সাথে সাথে ততটা প্রাসঙ্গিক নয়, তবে সেগুলি অবশ্যই বোঝার যোগ্য!

ব্যতিক্রম#set_backtrace

রুবি ইস্যু ট্র্যাকারে একটি বৈশিষ্ট্য অনুরোধ রুবি 3.4-এ এই পরিবর্তনের আগে স্ট্রিংগুলির অ্যারের সাথে ব্যাকট্রেস সেট করাকে "ক্ষতিকর" হিসাবে বর্ণনা করেছে। ব্যতিক্রমটি পূর্বে #backtrace_locations-এ শূন্য ফেরত দিয়েছে .

রুবি 3.4-এ, Exception#set_backtrace একটি Thread::Backtrace::Location গ্রহণ করবে অ্যারে যাতে আপনি একটি Backtrace পুনর্নির্মাণ করতে পারেন  ইনস্ট্যান্স এবং একটি সম্পূর্ণ কার্যকরী ব্যতিক্রম আছে।

পরিসীমা#আকার

Range#size এছাড়াও Ruby 3.4-এ নতুন আচরণ রয়েছে। যদি রেঞ্জ যে size এটি পুনরাবৃত্তিযোগ্য নয়, রুবি এখন একটি TypeError নিক্ষেপ করবে৷ . এটি আচরণের একটি ছোট পরিবর্তন যা আপনি size কল করলেই আপনি লক্ষ্য করবেন ব্যাপ্তির একটি ছোট উপসেটে।

রুবি 3.4-এ অন্যান্য পরিবর্তনগুলি নতুন

রুবি 3.4-এ আরেকটি ছোট পরিবর্তন হল এমন পদ্ধতিতে যা তারা ব্যবহার করে না এমন একটি ব্লকে চলে যায়। ভার্বোস মোডে চলার সময়, রুবি এখন একটি সতর্কবার্তা দেবে যদি আপনি ব্লক ব্যবহার না করে এমন পদ্ধতিতে ব্লক পাস করেন।

আপনি এটা শুনে খুশি হতে পারেন যে রুবি 3.4 Array.each-এর কর্মক্ষমতা উন্নত করে একটি বাস্তবায়ন পুনর্লিখনের কারণে!

অবশেষে, অন্য একটি আপডেট হল কিভাবে ত্রুটি বার্তা এবং ব্যাকট্রেস প্রদর্শিত হয়। রুবি এখন প্রাসঙ্গিক হলে ব্যাকটিক্সের পরিবর্তে একক উদ্ধৃতি ব্যবহার করবে এবং একটি পদ্ধতির নামের আগে একটি শ্রেণীর নাম প্রদর্শন করবে।

রুবি 3.4 এ আপগ্রেড করা হচ্ছে

রুবি 3.4 এ আপগ্রেড করা বেশিরভাগ লোকের জন্য একটি বড় লিফট হওয়া উচিত নয়। সবচেয়ে শ্রম-নিবিড় অংশ ঐ সমস্ত অপ্রয়োজনীয় হিমায়িত স্ট্রিং জাদু মন্তব্য অপসারণ করা হবে! রুবি 3.4-এ যা কিছু নতুন আছে তার সুবিধা নিতে আপগ্রেড করার জন্য সময় নেওয়া লভ্যাংশ প্রদান করবে, তাই দেরি করবেন না!

এবং ভুলে যাবেন না—আপনার ইনবক্সে আরও রুবির খবর এবং এমনকি এই ধরনের টিউটোরিয়াল পেতে, Honeybadger নিউজলেটারের জন্য সাইন আপ করুন!


  1. onclick() – জাভাস্ক্রিপ্ট সহ একটি ফাংশন কল করবেন?

  2. কিভাবে PHP এ imagesetpixel() ফাংশন ব্যবহার করে একটি একক পিক্সেল সেট করবেন?

  3. অ্যান্ড্রয়েডে বিভিন্ন স্ক্রীন সাইজ কিভাবে সাপোর্ট করবেন?

  4. অ্যান্ড্রয়েডে ক্লিক করলে চলে যায় না এমন বিজ্ঞপ্তিগুলি কীভাবে তৈরি করবেন?