কম্পিউটার

রুবি আলিয়াস কীওয়ার্ড কীভাবে ব্যবহার করবেন

আপনি দুটি উপায়ে রুবি পদ্ধতির একটি বিকল্প নাম দিতে পারেন:

  • উনাম (কীওয়ার্ড)
  • alias_method

কারণ তারা একই জিনিস কিছুটা ভিন্ন উপায়ে করে এটি একটি বিভ্রান্তিকর বিষয় হতে পারে।

এই চিত্রটি পার্থক্যের একটি সারাংশ :

রুবি আলিয়াস কীওয়ার্ড কীভাবে ব্যবহার করবেন

আসুন এই পার্থক্যগুলিকে আরও বিশদভাবে অন্বেষণ করি একটি দৃঢ় বোঝার জন্য!

উনাম কীওয়ার্ড

প্রথমে আমাদের আছে alias , যা একটি রুবি কীওয়ার্ড (যেমন if , def , class , ইত্যাদি)

এটা এরকম দেখাচ্ছে :

alias print_something puts

print_something 1

এখন print_something কল করা হচ্ছে puts কল করার মতই .

কারণ alias একটি কীওয়ার্ড এটির কিছু ​​আকর্ষণীয় বৈশিষ্ট্য রয়েছে :

  • এর বিশেষ সিনট্যাক্স আছে
  • এটি আপনার কোডের যেকোনো জায়গায় ব্যবহার করা যেতে পারে
  • এটি গ্লোবাল ভেরিয়েবলের নাম দিতে পারে (এটি করবেন না!)

উনামের বৈধ ফর্মগুলি হল৷ :

  • ওরফে a b
  • ওরফে :a :b
  • ওরফে :"#{}" :b

লক্ষ্য করুন যে আর্গুমেন্টের মধ্যে কোন কমা নেই একটি নিয়মিত পদ্ধতির মত।

রুবি উভয়ই আশা করে a &b বৈধ পদ্ধতির নাম হতে, ভেরিয়েবল এখানে কাজ করে না। আপনি যদি ভেরিয়েবল ব্যবহার করতে চান তাহলে আপনাকে এরকম কিছু করতে হবে…

উদাহরণ :

a = :print_something
b = :puts

alias :"#{a}" :"#{b}"

কিন্তু এটি কুৎসিত দেখাচ্ছে, তাই আপনি alias_method ব্যবহার করতে চাইতে পারেন গতিশীল পদ্ধতির নামের জন্য।

অ্যালিয়াস_মেথড পদ্ধতি

পরবর্তী:

আমাদের alias_method আছে , যা Module-এ সংজ্ঞায়িত একটি পদ্ধতি .

আপনি শুধুমাত্র ক্লাস এবং মডিউল স্তরে এই পদ্ধতিটি ব্যবহার করতে পারেন, কিন্তু ইনস্ট্যান্স পদ্ধতির ভিতরে নয়৷

এখানে ডকুমেন্টেশন থেকে একটি বিবরণ আছে :

alias_method:“ new_name তৈরি করে old_name পদ্ধতির একটি নতুন অনুলিপি . এটি ওভাররাইড করা পদ্ধতিগুলিতে অ্যাক্সেস বজায় রাখতে ব্যবহার করা যেতে পারে।"

উদাহরণ :

class Foo
  alias_method :print_something, :puts
end

এটি print_something এর নাম হবে puts করতে Foo এর ভিতরে .

আপনি alias_method হিসাবে স্ট্রিং ব্যবহার করতে পারেন আর্গুমেন্ট।

উদাহরণ :

class Foo
  alias_method "print_something", "puts"
end

উনাম বনাম উপনাম_পদ্ধতি

আপনি alias এর একটি ওভারভিউ দেখেছেন &alias_method .

কিন্তু পার্থক্য কখন আসে?

  1. যখন আপনি একটি গতিশীলভাবে তৈরি পদ্ধতি নামের জন্য একটি উপনাম সংজ্ঞায়িত করেন (যেমন “abc#{rand}”)
  2. যখন আপনি একটি পদ্ধতির ভিতরে একটি উপনাম সংজ্ঞায়িত করেন

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

alias_method সহ আপনি আরও নমনীয় আর্গুমেন্ট পাবেন।

উদাহরণ :

class Cat
  def speak
    "meow"
  end

  alias_method "#{name.downcase}_speak", :speak
end

p Cat.new.cat_speak
# "meow"

এখন :

আপনি যদি একটি পদ্ধতির ভিতরে একটি উপনাম সংজ্ঞায়িত করতে চান তবে আপনি এই ত্রুটিটি পাবেন:

undefined method 'alias_method' for # (NoMethodError)
এর জন্য অনির্ধারিত পদ্ধতি 'alias_method'

কারণ আপনি একটি বস্তুর মধ্যে কাজ করছেন এবং একটি ক্লাস নয়!

একটি উদাহরণ পদ্ধতির ভিতরে Module-এ সংজ্ঞায়িত পদ্ধতিগুলিতে আপনার অ্যাক্সেস নেই , যেখানে alias_method সংজ্ঞায়িত করা হয়।

এখানে একটি সম্ভাব্য সমাধান আছে :

def enable_aliased_methods
  self.class.send(:alias_method, :x, :testing)
end

alias ব্যবহার করা হচ্ছে :

def enable_aliased_methods
  alias :x :testing
end

একটি গুরুত্বপূর্ণ পার্থক্য:

  • alias দ্বারা সংজ্ঞায়িত একটি পদ্ধতি সেই ক্লাসের অন্তর্গত হবে যেখানে alias ব্যবহৃত হয়
  • alias_method দ্বারা সংজ্ঞায়িত একটি পদ্ধতি self এর অন্তর্গত , কোড চালানোর সময় বর্তমান ক্লাস

এই কারণেই এটি গুরুত্বপূর্ণ:

যদি আপনি একটি অভিভাবক শ্রেণিতে একটি পদ্ধতি কল করেন যা alias ব্যবহার করে কীওয়ার্ড…

অ্যালিয়াসিংটি প্যারেন্ট ক্লাসে ঘটবে এবং সেই ক্লাসে নয় যেটি পদ্ধতিটিকে কল করছে৷

উদাহরণ :

class Food
  def create_alias
    alias print_on_screen puts
  end
end

class Apple < Food
end

Apple.new.create_alias

কিন্তু আপনি যদি alias_method ব্যবহার করেন পদ্ধতিটি শুধুমাত্র Apple-এ উপনাম করা হবে .

আলিয়াসিং পদ্ধতির একটি অনুলিপি তৈরি করে

alias_method এর বর্ণনা অনুযায়ী &alias (keyword) , রুবি পদ্ধতির একটি অনুলিপি তৈরি করে।

এটি শুধুমাত্র একটি নতুন নাম নয়।

কিন্তু পদ্ধতির একটি প্রকৃত অনুলিপি .

এর কিছু ব্যবহারিক প্রভাব রয়েছে:

def bacon
  123
end

alias :x :bacon

x
# 123

bacon
# 123

তাই আমরা ওরফে x bacon তে , এখন দেখুন আমি bacon পুনরায় সংজ্ঞায়িত করলে কি হয় :

def bacon
  234
end

x
# 123

bacon
# 234

x পদ্ধতি একই থাকে, কিন্তু bacon নতুন মান ফেরত দেয়!

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

ভিডিও টিউটোরিয়াল

সারাংশ

সাধারণভাবে আমি আরও alias_method পছন্দ করি কারণ এটি একটি বাস্তব পদ্ধতি।

যখন alias কীওয়ার্ডের কিছু বিশেষ বৈশিষ্ট্য রয়েছে যা আপনাকে মনে রাখতে হবে এবং মনে রাখতে হবে।

আপনি কি নতুন কিছু শিখেছেন?

এই নিবন্ধটি আপনার রুবি বন্ধুদের সাথে শেয়ার করুন যাতে তারাও শিখতে পারে!


  1. রুবি নির্বাচন পদ্ধতি কিভাবে ব্যবহার করবেন (উদাহরণ সহ)

  2. রুবি এনি, অল, নন এবং ওয়ান কিভাবে ব্যবহার করবেন

  3. রুবি গ্রেপ পদ্ধতি কীভাবে ব্যবহার করবেন (উদাহরণ সহ)

  4. রুবি মানচিত্র পদ্ধতি কীভাবে ব্যবহার করবেন (উদাহরণ সহ)