• 0

كيف أقارن بين متغيرات فيها إصدارات معينة في روبي؟

أريد كتابة شيفرة برمجية للمقارنة بين سلاسل نصية موجود فيها إصدارات ومن ثم إرجاع الإصدار الأحدث بينها، السلاسل النصية بها معلومات كالتالية:

'0.1', '0.2.1', '0.44'

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


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

هنالك عدة طرق للمقارنة بين الإصدارات في روبي فيمكنك على سبيل المثال استخدام هذا كشرط للمقارنة ومعرفة الإصدار الأكبر بين الإصدارين:

Gem::Version.new('0.4.1') > Gem::Version.new('0.10.1')

وهنالك طريقة ثانية عن طريق استخدام Gem::Dependency مع تابع match?() وnew حيث نمرر رقم الإصدار الأول في new وأما الإصدار الثاني فسنمرره إلى تابع match?() للمقارنة بين هذين الإصدارين كما في المثال التالي:

Gem::Dependency.new('', '~> 1.4.5').match?('', '1.4.6beta4')

أو يمكنك إنشاء صنف جديد للمقارنة بين الإصدارات كما يظهر في المثال التالي:

class Version < Array
  def initialize s
    super(s.split('.').map { |e| e.to_i })
  end
  def < x
    (self <=> x) < 0
  end
  def > x
    (self <=> x) > 0
  end
  def == x
    (self <=> x) == 0
  end
end
p [Version.new('1.2') < Version.new('1.2.1')]
p [Version.new('1.2') < Version.new('1.10.1')]

المصدر

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


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

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

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

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


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

تسجيل الدخول

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


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