• 0

ما الفرق بين == و === و eql? و equal? في الروبي ؟

أريد أن أعرف الفرق بين == و === و eql? و equal? في لغة الروبي فهل هم نفس الشيء أم لكل واحدة منهم شيء يميزه عن البقية ؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

هنالك فرق بين هؤلاء الأربعة فـ == و === تقريبا لديهم نفس الوظيفة فهم يقومون بالتحقق من المساواة كما في المثال التالي:

"test" == "test"  #=> true
"test" === "test" #=> true

لكن الفرق أن === تقوم بمساواة الحالة أي أنها تتأكد من الحالة الأولى للمتغير كما في المثال التالي:

String === "test"   #=> true
String == "test"  #=> false

أما eql? فهي تقوم بالتحقق من القيم بين كائنين أي أن هل للكائن الأولى نفس قيمة الثاني أم لا وهي في الغالب تستخدم مع الهاشات (Hash) كما في المثال التالي:

class Equ
  attr_accessor :val
  alias_method  :initialize, :val=
  def hash()           self.val % 2             end
  def eql?(other)      self.hash == other.hash  end
end

h = {Equ.new(3) => 3,  Equ.new(8) => 8,  Equ.new(15) => 15}    #3 entries, but 2 are :eql?
h.size            # => 2
h[Equ.new(27)]    # => 15

وفي النهاية تستخدم equal? للتحقق من الكائن أي أن في المثال التالي هل أن a و b يشيران لنفس الكائن أم لا:

a = b = '5'
a.equal?(b)
# => true

للمزيد من المعلومات أنصحك بقراءة هذا المقال.

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن