مراجعة - آلة حاسبة آمنة
جزء من قسم المنطق وتدفق العمليات في رحلة 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السلاسل النصية بعمق
نظرة عامة على أساليب السلاسل النصيةاستيفاء السلاسل النصيةالتكرار عبر السلاسل النصيةالتقسيم والضممراجعة - ناسج السلاسل النصية4Blocks، Procs و Lambdas
ما هي الكتلة؟do..end مقابل الأقواس المعقوفةالكلمة المفتاحية yieldمعاملات الكتلةProcs و Lambdasمراجعة - مكرّر مخصّص7Hashes - الجزء الثاني
Hash.new مع القيم الافتراضيةالتكرار عبر HashesHashes متداخلةالدمج والتحويلمراجعة - عدّاد التكرار10مشروع - سجلات الطلاب
نظرة عامة على المشروعإضافة طالب5قوة Enumerable
Select و Rejectتسلسل MapReduce / Injectcount، all?، any?، none?group_by و partitionsort_by، min_by، max_byمراجعة - خط أنابيب البيانات3المصفوفات ثنائية الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالتكرار عبر المصفوفات ثنائية الأبعادالأنماط الشائعة للمصفوفات ثنائية الأبعادمراجعة - عمليات المصفوفات6المشروع - مدير المكتبة
نظرة عامة على المشروعإضافة كتاب9معالجة الأخطاء
ما هو الاستثناء؟begin / rescueعبارات rescue المتعددةensure و raiseمراجعة - آلة حاسبة آمنةتدرّب بنفسك: مترجم Ruby عبر الإنترنت