আপনি কি জানেন যে সঠিক রুবি পদ্ধতি ব্যবহার করলে আপনি অনেক কাজ বাঁচাতে পারেন?
আপনি যত বেশি পদ্ধতির সাথে পরিচিত হবেন তত দ্রুত আপনি কাজের কোড তৈরি করতে পারবেন এবং কর্মক্ষমতা এবং গুণমান উভয় ক্ষেত্রেই এই কোডটি তত ভালো হবে।
তাই আজ আমি আপনাদের সামনে এমন ৭টি আকর্ষণীয় পদ্ধতির পরিচয় দিতে চাই যা হয়তো আপনি আগে দেখেননি।
বিষয়বস্তু
- 1 পূর্ণসংখ্যা# সংখ্যা পদ্ধতি (রুবি 2.4)
- 2 ট্যাপ পদ্ধতি
- 3 অ্যারে#values_at
- 4 Hash#transform_values (রুবি 2.4)
- 5 Kernel#itself (Ruby 2.2)
- 6 অ্যারে#কাউন্ট
- 7 গণনাযোগ্য# চক্র
- 8 সারাংশ
- 8.1 সম্পর্কিত
পূর্ণসংখ্যা# সংখ্যা পদ্ধতি (রুবি 2.4)
এটি রুবি 2.4-এ প্রবর্তিত একটি নতুন পদ্ধতি এবং আপনি যদি একটি পূর্ণসংখ্যার পৃথক সংখ্যার সাথে কাজ করতে চান তবে এটি খুবই দরকারী৷
দ্রষ্টব্য :যদি আপনি রুবি 2.4 পরিবর্তনে গতি না পান, তাহলে Fixnum এবং Bignum এখন অবহেলিত এবং উভয়ই ইন্টিজারে মার্জ করা হয়েছে।
আপনি মনে করতে পারেন যে অ্যারের মতো সূচী ব্যবহার করে কাজ করতে পারে :
2[0] # 0 2[1] # 1
কিন্তু আপনি যা পাবেন তা অঙ্ক নয়, বাইনারি বিটগুলি যা এই সংখ্যাটি তৈরি করে৷
তাই প্রাক-digits
পদ্ধতিটি সাধারণ সমাধানটি ছিল সংখ্যাটিকে একটি স্ট্রিংয়ে রূপান্তর করা, তারপর সেই স্ট্রিংটিকে chars
ব্যবহার করে অক্ষরগুলির একটি অ্যারেতে ভেঙে দেওয়া। পদ্ধতি, এবং অবশেষে প্রতিটি স্ট্রিংকে একটি পূর্ণসংখ্যাতে রূপান্তর করুন।
উদাহরণ :
123.to_s.chars.map(&:to_i).reverse [3, 2, 1]
কিন্তু পোস্ট-digits
-এ পদ্ধতি বিশ্ব, আপনি সহজভাবে এটি করতে পারেন:
123.digits [3, 2, 1]
অনেক ভালো, তাই না?
ভিডিও :
ট্যাপ পদ্ধতি
কখনও কখনও আপনি একটি বস্তু তৈরি করতে চান, এটিতে কিছু পদ্ধতি কল করুন এবং একই বস্তুটি ফেরত দিন।
আপনাকে এরকম কিছু করতে হবে :
user = User.new user.name = "John" user
সমস্যা হল যে আমাদের এই অস্থায়ী পরিবর্তনশীলটির সাথে মোকাবিলা করতে হবে৷
এখানে tap
পদ্ধতি উদ্ধার আসে!
tap
দিয়ে শেষ উদাহরণ হল এই:
User.new.tap { |user| user.name = "John" }
লক্ষ্য করুন কিভাবে অস্থায়ী ভেরিয়েবল চলে গেছে, যা একটি ভাল জিনিস 🙂
অ্যারে#values_at
আপনি যদি একটি অ্যারে বা হ্যাশ থেকে একাধিক অ-ক্রমিক মান পেতে চান তবে আপনি এটি করতে পারেন:
arr = [1,2,3,4,5] a, b, c = arr[0], arr[1], arr[4]
অথবা আপনি values_at
ব্যবহার করতে পারেন পদ্ধতি:
arr = [1,2,3,4,5] a, b, c = arr.values_at(0, 1, 4)
এটি একটি হ্যাশের সাথেও কাজ করে :
hash = {bacon: 300, chocolate: 200} p hash.values_at(:bacon, :chocolate) # [300, 200]
Hash#transform_values (রুবি 2.4)
ধরা যাক আপনার একটি হ্যাশ আছে এবং আপনি কিছু কারণে সমস্ত মান পরিবর্তন করতে চান।
আপনি Array#map
দিয়ে যা করবেন তা সাজান .
map
এর সাথে সমস্যা আপনি হ্যাশের পরিবর্তে একটি অ্যারে-অফ-অ্যারে (মাল্টি-ডাইমেনশনাল অ্যারে) পাবেন। এছাড়াও কোন Hash#map!
নেই .
সুতরাং একটি সমাধান এটি হতে পারে :
h = {bacon: 200, coconut: 300} h.each { |k,v| h[k] = v*2 }
এই উদাহরণে আমরা প্রতিটি মানকে দুই দিয়ে গুণ করি।
যার ফলাফল :
{:bacon=>400, :coconut=>600}
রুবি 2.4 থেকে এটি করার আরও ভাল উপায় রয়েছে :
h.transform_values! { |v| v * 2 }
এটি রেল থেকে আসা সেই পদ্ধতিগুলির মধ্যে আরেকটি, যা এখন কাঠামোর বাইরে উপলব্ধ 🙂
Kernel#itself (রুবি 2.2)
আপনি যদি আমাকে বলেন যে এই পদ্ধতিটি প্রথমে খুব আকর্ষণীয় মনে হচ্ছে না আমি আপনার সাথে একমত হব।
কিন্তু কারণ হল যে আপনাকে কিছু ভাল উদাহরণ দেখতে হবে।
তাহলে ধরা যাক আমাদের কাছে বারবার শব্দ সহ একটি অ্যারে আছে এবং আমরা সেগুলি গণনা করতে চাই…
যদিও এটি করার অনেক উপায় আছে, আমি মনে করি এটি আমাদের নতুন বন্ধুকে পরীক্ষা করার জন্য একটি দুর্দান্ত কেস:Kernel#itself
.
উদাহরণ :
words = %w(cat cat tiger dog cat) words.group_by(&:itself).transform_values(&:size)
লক্ষ্য করুন কিভাবে আমি এটিকে Hash#transform_values
এর সাথে একত্রিত করেছি !
যদি transform_values
উপলব্ধ নয় আপনি এটি করতে পারেন:
words .group_by(&:itself) .each_with_object({}) { |(k,v), hash| hash[k] = v.size }
ভিডিও :
দ্রষ্টব্য :itself
পদ্ধতিটি Object
এর অধীনে প্রদর্শিত হয় ক্লাস ডকুমেন্টেশনে, কিন্তু পদ্ধতিটি Kernel
-এ সংজ্ঞায়িত করা হয়েছে মডিউল।
অ্যারে#গণনা
কখনও কখনও আপনাকে কিছু গণনা করতে হবে৷
সাধারণ কাউন্টার + লুপ ব্যবহার করার পরিবর্তে আপনি count
ব্যবহার করতে পারেন পদ্ধতি!
উদাহরণ :
letters = %w(a a a b c d a) letters.count("a") # 4
এই পদ্ধতির অ্যারে সংস্করণটিও একটি ব্লক নেয়, যাতে আপনি আরও জটিল গণনা করতে পারেন৷
numbers = [1,2,3,4,5,6] numbers.count(&:even?) # 3
ভিডিও :
গণনাযোগ্য# চক্র
আপনি কিছু প্যাটার্ন পুনরাবৃত্তি করতে চান? অথবা হতে পারে আপনার একটি সহজ অন/অফ টগল দরকার?
তারপর Enumerable#cycle
আপনি যা খুঁজছেন তা হতে পারে!
উদাহরণ :
array = %w(a b c) # Same as array * 3 array.cycle(3).to_a
কিন্তু cycle
এর জন্য আমার প্রিয় ব্যবহার একটি "সুইচ" বা "টগল" অবজেক্ট তৈরি করা।
switch = %w(on off).cycle switch.next
এটি সম্পর্কে ভাল জিনিস হল যে আপনাকে ম্যানুয়ালি আপডেট করতে সুইচের বর্তমান মান পরীক্ষা করার দরকার নেই৷
আপনি শুধু next
কল করতে পারেন এবং রুবি জানতে পারবে কি করতে হবে 🙂
সারাংশ
আপনি কিছু নতুন দরকারী পদ্ধতি সম্পর্কে শিখেছেন:Integer#digits, Kernel#tap, Array#values_at, Hash#transform_values, Kernel#itself, Array#count, Enumerable#cycle।
আপনি যদি ইতিমধ্যে এই মহান সম্পর্কে জানতেন! যদি না হয় আমি আশা করি আপনি তাদের দরকারী বলে মনে করেন 🙂
এই নিবন্ধটি উপভোগ করেছেন? তারপর আপনার বন্ধুদের সাথে শেয়ার করুন যাতে তারাও এটা উপভোগ করতে পারে!