اذهب إلى المحتوى
  • 0

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

ali_agha

السؤال

Recommended Posts

  • 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

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...