আপনি অবজেক্টের অ্যারে ফিল্টার করতে রুবিতে নির্বাচন পদ্ধতি ব্যবহার করতে পারেন।
উদাহরণস্বরূপ, আপনি সব খুঁজে পেতে পারেন৷ একটি তালিকায় জোড় সংখ্যা।
select
ছাড়া এটি এই মত দেখায়:
even_numbers = [] [1,2,3,4,5,6].each do |n| if n.even? even_numbers << n end end even_numbers
এত সহজ কিছুর জন্য এটি বেশ কিছুটা কোড!
চলুন শিখি কিভাবে select
ব্যবহার করতে হয় .
পদ্ধতির উদাহরণ নির্বাচন করুন
নির্বাচন ব্যবহার করার জন্য একটি ব্লক প্রয়োজন৷
ব্লকের ভিতরে, আপনাকে এমন কিছু ফেরত দিতে হবে যা মূল্যায়ন করে true
অথবা false
, এবং select
আপনার অ্যারে ফিল্টার করতে এটি ব্যবহার করবে।
আপনি এই নিবন্ধটি পড়ে রুবিতে বুলিয়ান মান সম্পর্কে জানতে পারেন।
এখানে একটি উদাহরণ :
[1,2,3,4,5,6].select { |n| n.even? }
এটি ভূমিকার প্রথম উদাহরণের মতো একই কাজ করবে, কিন্তু অনেক কম কোড সহ৷
৷আসলে, আমরা এটি আরও কমাতে পারি।
এরকম :
[1,2,3,4,5,6].select(&:even?)
এই ধরনের শর্টকাট তখনই কাজ করে যখন আপনাকে অ্যারের প্রতিটি উপাদানে সরাসরি একটি মেথড কল করতে হয়।
Btw, আপনি select
ও ব্যবহার করতে পারেন হ্যাশ সহ।
উদাহরণ :
stock = { apples: 10, oranges: 5, bananas: 1 } stock.select { |k, v| v > 1 } # {:apples=>10, :oranges=>5}
যেখানে k
কী এবং v
প্রতিনিধিত্ব করে মান প্রতিনিধিত্ব করে।
আমি বলছি :
"আমাকে 1-এর বেশি স্টক সহ সমস্ত ফল খুঁজুন।"
অন্যান্য পদ্ধতির সাথে নির্বাচনের সমন্বয়
আপনি নির্বাচন পদ্ধতিটিকে অন্য একটি গণনাযোগ্য পদ্ধতির সাথে একত্রিত করতে পারেন।
সবচেয়ে উল্লেখযোগ্যভাবে with_index
.
উদাহরণ :
fruits = %w(apple orange banana) fruits.select.with_index { |word, idx| idx.even? } # ["apple", "banana"]
এটি আপনাকে বস্তুর পরিবর্তে (এই ক্ষেত্রে একটি স্ট্রিং) নিজেই সূচক ব্যবহার করে ফিল্টার করতে দেয়।
ইন-প্লেস অ্যারে ফিল্টারিং
select
ব্যবহার করে একটি অ্যারেতে সর্বদা একটি নতুন অ্যারে তৈরি করে৷
পরিবর্তে আপনি যদি মূল অ্যারে পরিবর্তন করতে চান, আপনি select!
ব্যবহার করতে পারেন পদ্ধতি।
এখানে কিভাবে :
fruits = %w(apple orange banana) fruits.select! { |fruit| fruit.start_with? "a" } # ["apple"]
একটি বিস্ময়বোধক চিহ্ন দিয়ে শেষ হওয়া পদ্ধতি (যেমন select!
) একটি নতুন ফেরত দেওয়ার পরিবর্তে বস্তুটিকে পরিবর্তন করবে, কিন্তু এই নিয়মটি ভাষা দ্বারা প্রয়োগ করা হয় না৷
এটা আমাদের মধ্যে একটা কনভেনশন মাত্র।
খুঁজুন বনাম নির্বাচন করুন
আপনি যখন একটি তালিকা ফিল্টার করতে চান এবং ফলাফল সহ একটি অ্যারে পেতে চান তখন নির্বাচনটি দুর্দান্ত৷
কিন্তু আপনি যদি শুধুমাত্র একটি বস্তু খুঁজে পেতে চান?
আপনি find
ব্যবহার করতে পারেন পদ্ধতি।
এরকম :
letters = %w(a aa aaa aaaa) letters.find { |l| l.size == 3 } # "aaa" letters.find { |l| l.size == 10 } # nil
Find আপনাকে প্রথম মিল বা nil
দেয় যদি পাওয়া না যায়।
সমস্ত পদ্ধতি খুঁজুন
বোঝা
আপনি যদি find_all
নিয়ে ভাবছেন পদ্ধতি, এবং এটি কিভাবে find
এর সাথে সম্পর্কিত &select
...
এটি খুবই সহজ!
-
find_all
পদ্ধতি হলselect
-এর একটি উপনাম . -
find
পদ্ধতি আপনাকে অনেক বস্তুর পরিবর্তে একটি নির্দিষ্ট বস্তু খুঁজতে সাহায্য করে।
Ruby 2.6 select
-এর জন্য আরেকটি উপনাম যোগ করে :
filter
নির্বাচনের বিপরীত কি?
আপনি যে উপাদানগুলি চান না তা নির্বাচন করার পরিবর্তে অপসারণ করতে পারেন৷
৷এটি নির্বাচন করা সহজ৷ :
[1,2,3,4,5,6].select { |n| n != 4 }
কিন্তু এমন একটি পদ্ধতি রয়েছে যা জিনিসগুলিকে আরও স্পষ্ট করে তোলে৷
৷
সেই পদ্ধতিটি হল reject
.
উদাহরণ :
[1,2,3,4,5,6].reject { |n| n == 4 }
পারফরম্যান্সের ক্ষেত্রে বা অন্যথায় আপনি কোনো প্রযুক্তিগত সুবিধা পাবেন না, তবে এটি আপনার কোডকে আরও ভালো করে তুলবে।
রেল নির্বাচন পদ্ধতি
আমি চাই না আপনি যখন রেল মডেলের সাথে কাজ করেন এবং আপনি select
ব্যবহার করতে পারেন তখন আপনি বিভ্রান্ত হন সেখানে।
আপনার জানা উচিত...
এই select
পদ্ধতি ভিন্ন!
উদাহরণ :
Fruit.select(:id, :name, :color)
যখন আপনি select
ব্যবহার করেন একটি ActiveRecord
সহ মডেল আপনি ডাটাবেস থেকে নির্দিষ্ট কলামের জন্য জিজ্ঞাসা করছেন।
যতদূর আমি বুঝতে পারি এটি বেশিরভাগ কর্মক্ষমতা কারণে করা হয়।
এতে একটি শেষ নোট :
আপনি যদি একটি Rails অ্যাপের মধ্যে একটি নিয়মিত অ্যারে নিয়ে কাজ করেন তাহলে আপনি select
ব্যবহার করছেন এই পুরো নিবন্ধে আমরা যে পদ্ধতির কথা বলেছি।
সারাংশ
আপনি সিলেক্ট সম্পর্কে শিখেছেন, অ্যারে, রেঞ্জ এবং হ্যাশের মতো বস্তুর সংগ্রহের সাথে কাজ করার জন্য রুবির সবচেয়ে সহায়ক পদ্ধতিগুলির মধ্যে একটি৷
এখন আপনার এডিটর খোলার এবং এটি ব্যবহার করার পালা৷
৷পড়ার জন্য ধন্যবাদ!