ملخص - آلة حاسبة آمنة
جزء من قسم المنطق وتدفق العمليات في رحلة 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تدرّب بنفسك: مترجم Ruby عبر الإنترنت