uniq মেথড দিয়ে আপনি একটি অ্যারে থেকে সকল ডুপ্লিকেট এলিমেন্ট সরিয়ে ফেলতে পারেন।
চলুন দেখি কীভাবে কাজ করে!
আপনার কাছে যদি এমন একটি অ্যারে থাকে:
n = [1,1,1,2,3,4,5]
যেখানে নম্বর 1 ডুপ্লিকেট।
এই অ্যারেতে uniq কল করলে এক্সট্রা গুলো রিমুভ হয়ে যায় এবং ইউনিক নম্বর সহ একটি নতুন অ্যারে রিটার্ন করে।
উদাহরণ:
n.uniq # [1,2,3,4,5]
লক্ষ্য করুন uniq n (মূল অ্যারে) কে পরিবর্তন করবে না, তাই আমাদের либо uniq! কল করতে হবে, অথবা নতুন অ্যারে সংরক্ষণ করতে হবে।
উদাহরণ:
unique_numbers = n.uniq
খুব সহজ, ঠিক না?
কিন্তু অনেক লোক জানেন না যে uniq একটি ব্লক নেয়।
একটি ব্লক দিয়ে আপনি আরও এডভান্সড কাজ করতে পারেন।
আমি ব্যাখ্যা করছি…
রুবি Uniq মেথড ব্লকসহ কীভাবে ব্যবহার করবেন
আপনি uniq কল করলে, এটি আপনার অ্যারে এলিমেন্ট দিয়ে একটি হ্যাশ বানায়।
প্রতিটি এলিমেন্ট হ্যাশের একটি কি হয়ে যায়।
কারণ হ্যাশ কি ইউনিক, তাই আমরা হ্যাশের সকল কির লিস্ট পাই, এই লিস্টটি হয়ে যায় আমাদের ইউনিক এলিমেন্টসহ নতুন অ্যারে।
এখন:
আপনি যদি চান যে কী জিনিসটি কিছুকে ইউনিক বানাবে সেটি পরিবর্তন করতে, তবে আপনি একটি ব্লক পাস করতে পারেন।
এখানে একটি উদাহরণ:
fruits = %w(orange apple banana)
"Orange" এবং "Banana" এর একই লেন্থ ৬ ক্যারেক্টার।
আমরা uniq এইভাবে ব্যবহার করলে:
fruits.uniq(&:size) # ["orange", "apple"]
তখন আমরা "banana" ড্রপ করি কারণ স্ট্রিংগুলোর সাইজ দিয়ে তুলনা করলে সেটি ডুপ্লিকেট হয়ে যাবে।
আরেক উদাহরণ:
objects = [1, 2, "a", "b", :c, :d] objects.uniq(&:class)
এটি আপনাকে ক্লাস অনুযায়ী ইউনিক অবজেক্টসহ একটি অ্যারে দেবে:
[1, "a", :c]
এটির পাওয়ার দেখছেন?
যখন আপনি uniq-এ একটি ব্লক পাস করেন, আপনি সঠিকভাবে ডিফাইন করতে পারেন কোন নিয়ম অনুযায়ী কিছুকে ইউনিক মाना যাবে।
মাল্টিপল কন্ডিশনসহ Uniq কীভাবে ব্যবহার করবেন
আপনি একাধিক কন্ডিশন ব্যবহার করতে পারেন!
এভাবে:
মান লিন আপনার কাছে একটি User ক্লাস আছে, যাতে:
agenamecountry
আপনি প্রতিটি দেশে একই বয়সের শুধু একজনের লোক চান।
ব্লক দিয়ে সহজ:
[david, petter, raphael].uniq { |person| [person.age, person.country] }
এই কোডের সাথে, উভয় কন্ডিশন ম্যাচ করলে কিছুকে ইউনিক মाना হবে।
এটি কীভাবে কাজ করে?
ব্লক ছাড়া, অবজেক্টটি হ্যাশ কি হয়ে যায়।
ব্লক সাথে, ইয়েল্ডেড ভ্যালু হয়ে যায় হ্যাশ কি, এবং অবজেক্টটি হয়ে যায় হ্যাশ ভ্যালু।
তারপর…
রুবি ভ্যালুগুলো নেয় এবং সেগুলো নতুন অ্যারে হিসেবে রিটার্ন করে।
এগুলো শুধু ইমপ্লিমেন্টেশন ডিটেইলস, কিন্তু আমি এগুলো খুব আকর্ষণীয় পাই তাই আপনাদের সাথে শেয়ার করলাম।
সারসংক্ষেপ
আপনি রুবিতে uniq মেথড সম্পর্কে শিখেছেন! সঠিকভাবে কীভাবে ব্যবহার করবেন, কেন এটি উপকারী, এবং কীভাবে কাজ করে।
এখন এই মেথড দিয়ে প্র্যাক্টিস করুন যাতে আপনি মনে রাখতে পারেন।
পড়ার জন্য ধন্যবাদ!