5 أمثلة على أفضل استخدامات روبي
هل تساءلت يومًا ما الذي يمكننا فعله مع روبي؟ حسناً، ربما تكون السماء هي الحد الأقصى، ولكن يسعدنا أن نتحدث عن بعض الحالات المعروفة بشكل أو بآخر...
اقرأ مقالة قادمة من خبير روبي لدينا وتعرف على السبب الذي يجعلك لا تحتاج إلى هذه التجزئة دائمًا.
عندما نرغب في تجميع بعض الأشياء، غالبًا ما نستخدم #P63Teach_with_object
أو تمديد الفترة العادية حلقة باستخدام # مع_الجسم
. ولكن في معظم الحالات مطورو روبي يستخدمون التجزئة العادية كمُجمِّع وربما يكون ذلك جيدًا، ولكن في هذه المقالة، أود أن أوضح لكم أنه ليس من الضروري أن يكون التجزئة دائمًا.
نفترض أن جميع الملفات موضوعة في دليل واحد (الناس
).
لنفترض أن لدينا ما يلي الأشخاص/الأشخاص.csv
file:
الاسم الأول، اسم العائلة، العمر
جون,دو,24
جين، دي، 45
جوش,بي,55
أندريا، بويا، 34
أندرو,مور,54
نريد إيجاد إجمالي الصفوف ومتوسط الأعمار - يمكننا كتابة البرنامج النصي التالي:
الأشخاص/المحلل.rb
يتطلب 'csv'
مُجمّع = CSV.foreach('people.csv'، الرؤوس: صحيح)
.withobject({ المجموع: 0، المجموع الكلي: 0 }) do |row, agg|
agg[:الإجمالي] += 1
agg[:المجموع] += الصف ['العمر'].toi
النهاية
الإجمالي = المُجمَّع [:الإجمالي]
متوسط العمر = مُجمَّع [:إجمالي العمر].to_f / الإجمالي
يضع "الإجمالي: #{total}"
يضع "متوسط العمر: #{متوسط العمر}"
ونعم، إنه يفعل الشيء ولكن قراءة مثل هذه الكود متعة مشكوك فيها. يبدو أنه مستوى منخفض للغاية. يمكننا تحسينه من خلال توفير مجمع مخصص لـ حلقة.
الأشخاص/العصر_المُجمِّع.rb
صنف AgeAggregator
المُجمِّع: المجموع، :المجموع العمري
تعريف التهيئة
الإجمالي = 0
@الإجمالي_العمر = 0
نهاية
تعريف زيادة!
@الإجمالي += 1
النهاية
ديف incrementage! (العمر)
@الإجمالي += العمر
نهاية
تعريف متوسط العمر
المجموع الكلي.to_f / المجموع الكلي
النهاية
النهاية
وبعد ذلك ستبدو الحلقة كما هو موضح أدناه:
الأشخاص/المحلل.rb
يتطلب 'csv'
يتطلب نسبيًا './ Ageaggregator.rb'
مُجمَّع = CSV.foreach('people.csv'، الرؤوس: صحيح)
.withobject(AgeAggregator.new) do |row, agg|
agg.increment!
agg.incrementage!(row['age'].to_i)
النهاية
يضع "الإجمالي: #{aggregated.total}"
يضع "متوسط العمر: #{متوسط العمر الإجمالي}"
أعتقد أن الأمر أكثر وضوحاً.
لقد كتبنا المزيد من التعليمات البرمجية، ولكن يتم استخراج تفاصيل المستوى الأدنى إلى الفصل المنفصل. الآن يُقرأ النص الرئيسي بشكل أفضل بكثير.
بالطبع، يمكنك أن تجادل بأن المثال أبسط من أن يبذل الكثير من الجهد في إعادة الهيكلة، ولكن بربك - إنه مجرد مثال؛). إذا كان عليك تجميع المزيد من البيانات، فإن كائنات التجميع هذه هي حقًا طريقة الإنقاذ.
اقرأ المزيد:
إيجابيات وسلبيات تطوير برمجيات روبي