আপনি অবজেক্টের অ্যারে ফিল্টার করতে রুবিতে নির্বাচন পদ্ধতি ব্যবহার করতে পারেন।
উদাহরণস্বরূপ, আপনি সব খুঁজে পেতে পারেন৷ একটি তালিকায় জোড় সংখ্যা।
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 ব্যবহার করছেন এই পুরো নিবন্ধে আমরা যে পদ্ধতির কথা বলেছি।
সারাংশ
আপনি সিলেক্ট সম্পর্কে শিখেছেন, অ্যারে, রেঞ্জ এবং হ্যাশের মতো বস্তুর সংগ্রহের সাথে কাজ করার জন্য রুবির সবচেয়ে সহায়ক পদ্ধতিগুলির মধ্যে একটি৷

এখন আপনার এডিটর খোলার এবং এটি ব্যবহার করার পালা৷
৷পড়ার জন্য ধন্যবাদ!