ملخص - آلة حاسبة آمنة
جزء من قسم المنطق وتدفق العمليات في رحلة Ruby على Coddy — الدرس 47 من 56.
قم ببناء آلة حاسبة صغيرة تتعامل مع المدخلات الخاطئة، وتجمع بين raise، وعدة جمل rescue، و ensure.
التحدي
متوسطقم بتعريف دالة calc(a, op, b) تقوم بما يلي:
- تثير
ArgumentErrorمع الرسالة"unknown operator"إذا لم يكنopواحداً من+،-،*،/ - تنفذ العملية بخلاف ذلك (استخدم حساب الأعداد الصحيحة لـ
/)
ثم اقرأ ثلاثة أسطر من المدخلات، a، op، b: واستدعِ calc داخل كتلة begin / rescue / ensure:
- في حالة النجاح، اطبع
<a> <op> <b> = <result> - عند حدوث
ArgumentError، اطبعBad operator - عند حدوث
ZeroDivisionError، اطبعCannot divide by zero - في
ensure، اطبع دائماً--- end ---
استخدم Integer(...) لتحليل a و b، داخل نفس كتلة begin، بحيث تقع المدخلات غير الصحيحة أيضاً ضمن Bad operator (حيث يغطي ArgumentError كلتا الحالتين).
للمدخلات 6 / * / 7، يكون المخرج:
6 * 7 = 42
--- end ---للمدخلات 10 / / / 0:
Cannot divide by zero
--- end ---جرّب بنفسك
# TODO: قم بتعريف calc(a, op, b)، يطلق ArgumentError عند op غير معروف
raw_a = gets.chomp
op = gets.chomp
raw_b = gets.chomp
# TODO: begin/rescue/ensure كما هو موضح
جميع دروس المنطق وتدفق العمليات
1السلاسل النصية بعمق
نظرة عامة على دوال السلاسل النصيةتضمين النصوص (String Interpolation)التكرار عبر السلاسل النصيةالتقسيم والربط (Split و Join)مراجعة - نساج النصوص4Blocks و Procs و Lambdas
ما هو الـ Block؟do..end مقابل الأقواس { }الكلمة المفتاحية yieldمعاملات الـ BlockProcs و Lambdasمراجعة - Custom Iterator مخصص7Hashes - الجزء الثاني
Hash.new مع القيم الافتراضيةالتكرار عبر الـ Hashesالـ Hashes المتداخلةالدمج والتحويلمراجعة - عداد التكرار10مشروع - سجلات الطلاب
نظرة عامة على المشروعإضافة طالب5قوة الـ Enumerable
Select و Rejectتسلسل MapReduce / Injectcount، all?، any?، none?group_by و partitionsort_by، min_by، max_byمراجعة - Data Pipeline