• 0

كيف أُحوّل كائن إلى hash في روبي؟

لنفترض أن لدي الكائن Gift مع المتغيرات @name = "book" و @price = 15.95 فما هي أفضل طريقة لتحويل محتويات هذا الكائن إلى hash كما في المثال التالي:

{name: "book", price: 15.95}

 

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


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

يمكننا فعل ذلك بعدة طرق باستخدام روبي أو ريلز، فمثلا يمكننا استعمال حلقة التكرار لتكرار جميع القيم الموجودة ومن ثم استخدام عدّة توابع مثل instance_variable_get و to_s وdelete للتحويل إلى hash كما في المثال التالي:

class Gift
  def to_hash
    hash = {}
    instance_variables.each {|var| hash[var.to_s.delete("@")] = instance_variable_get(var) }
    hash
  end
end


h = Gift.new("Book", 19).to_hash

كما يمكنك استخدام هذه الطريقة التي استعملنا فيها توابع متنوعة مثل  to_sym وinstance_variable_get حيث استخدمنا حلقة التكرار map لنتمكن من التعامل مع كل عنصر وفي النهاية استخدمنا التابع to_h للتحويل إلى hash:

class Gift
  def to_hash
    instance_variables.map do |var|
      [var[1..-1].to_sym, instance_variable_get(var)]
    end.to_h
  end
end

 

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


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

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

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

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


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

تسجيل الدخول

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


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