কম্পিউটার

7টি স্বল্প পরিচিত রুবি পদ্ধতি যা আপনাকে আরও ভাল কোড লিখতে সাহায্য করবে

আপনি কি জানেন যে সঠিক রুবি পদ্ধতি ব্যবহার করলে আপনি অনেক কাজ বাঁচাতে পারেন?

আপনি যত বেশি পদ্ধতির সাথে পরিচিত হবেন তত দ্রুত আপনি কাজের কোড তৈরি করতে পারবেন এবং কর্মক্ষমতা এবং গুণমান উভয় ক্ষেত্রেই এই কোডটি তত ভালো হবে।

তাই আজ আমি আপনাদের সামনে এমন ৭টি আকর্ষণীয় পদ্ধতির পরিচয় দিতে চাই যা হয়তো আপনি আগে দেখেননি।

বিষয়বস্তু

  • 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।

আপনি যদি ইতিমধ্যে এই মহান সম্পর্কে জানতেন! যদি না হয় আমি আশা করি আপনি তাদের দরকারী বলে মনে করেন 🙂

এই নিবন্ধটি উপভোগ করেছেন? তারপর আপনার বন্ধুদের সাথে শেয়ার করুন যাতে তারাও এটা উপভোগ করতে পারে!


  1. আপনাকে আরও ভাল টাইপ করতে সাহায্য করার জন্য 5টি Android কীবোর্ড অ্যাপ

  2. 6টি অনলাইন কোড এডিটর যা আপনাকে কোড করতে সাহায্য করবে

  3. রুবি ফাংশন এবং পদ্ধতি:আপনার নিজের সংজ্ঞায়িত কিভাবে

  4. রুবি মধ্যে স্ট্যাটিক বিশ্লেষণ