Özet - Güvenli Hesap Makinesi
Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 47 / 56.
raise, birden fazla rescue ifadesi ve ensure yapısını birleştirerek, hatalı girişlere karşı dayanıklı küçük bir hesap makinesi oluşturun.
Görev
OrtaŞunları yapan bir calc(a, op, b) metodu tanımlayın:
- Eğer
op;+,-,*,/operatörlerinden biri değilse,"unknown operator"mesajıyla birArgumentErrorhatası fırlatır - Aksi takdirde işlemi gerçekleştirir (
/için tam sayı aritmetiği kullanın)
Ardından girdiden a, op, b şeklinde üç satır okuyun ve calc metodunu bir begin / rescue / ensure bloğu içinde çağırın:
- Başarılı olduğunda,
<a> <op> <b> = <result>yazdırın ArgumentErrordurumunda,Bad operatoryazdırınZeroDivisionErrordurumunda,Cannot divide by zeroyazdırınensurebloğunda, her zaman--- end ---yazdırın
a ve b değerlerini ayrıştırmak için aynı begin bloğu içinde Integer(...) kullanın; böylece tam sayı olmayan girdiler de Bad operator sonucunu verir (ArgumentError her iki durumu da kapsar).
6 / * / 7 girdisi için çıktı şöyledir:
6 * 7 = 42
--- end ---10 / / / 0 girdisi için:
Cannot divide by zero
--- end ---Kendin dene
# YAPILACAK: calc(a, op, b) tanımlayın, bilinmeyen op durumunda ArgumentError hatası fırlatır
raw_a = gets.chomp
op = gets.chomp
raw_b = gets.chomp
# YAPILACAK: açıklandığı gibi begin/rescue/ensure kullanın
Mantık ve Akış bölümündeki tüm dersler
1Derinlemesine Stringler
String Metotlarına Genel BakışString InterpolationStringler Üzerinde GezinmeSplit ve JoinÖzet - String Weaver4Bloklar, Procs ve Lambdalar
Blok Nedir?do..end ve Süslü Parantezleryield Anahtar KelimesiBlok ParametreleriProcs ve LambdalarÖzet - Özel İteratör7Hashes Bölüm 2
Varsayılan Değerlerle Hash.newHash Yapıları Üzerinde Yinelemeİç İçe Hash YapılarıBirleştirme ve DönüştürmeÖzet - Frekans Sayacı10Proje - Öğrenci Kayıtları
Projeye Genel BakışÖğrenci Ekle5Enumerable Gücü
Select ve RejectMap ZincirlemeReduce / Injectcount, all?, any?, none?group_by ve partitionsort_by, min_by, max_byÖzet - Data Pipeline8İleri Seviye Karar Yapıları
Sınıflar ve Regex ile CaseÇok Değerli whenTernary OperatörüSatır İçi if / unlessÖzet - Not Sınıflandırıcı32D Diziler
2D Dizi Temelleri2D Elemanlara Erişim2D Diziler Üzerinde YinelemeYaygın 2D KalıplarÖzet - Matris İşlemleri6Proje - Kütüphane Yöneticisi
Projeye Genel BakışKitap Ekle9Hata Yönetimi
İstisna Nedir?begin / rescueBirden Fazla rescue İfadesiensure ve raiseÖzet - Güvenli Hesap Makinesi