Kurzusok
/
Ruby
Ruby
/
Feladatok
/
Egyszerű számológép
Egyszerű számológép

Egyszerű számológép

Tanulófeladat

Bevezetés

A kivételek a Rubyben, akárcsak sok más nyelvben, a váratlan események kezelésének egy módját adják. Ha meg akarod akadályozni, hogy a programod összeomoljon, fontos, hogy megfelelően kezeld a kivételeket.

Amikor kivétel keletkezik, akár explicit módon dobod, akár a Ruby-értelmező dobja, a program letér a normál működés útjáról, és végül egy hibaüzenettel kilép:

raise ArgumentError.new("Something went wrong!")
=> Traceback (most recent call last):
.
.
ArgumentError (Something went wrong!)
1/0
=> Traceback (most recent call last):
.
.
ZeroDivisionError (divided by 0)

Ha meg akarjuk állítani ezt a leállási folyamatot, reagálnunk kell a kivételre. Ezt nevezik a kivétel „elkapásának”:

begin
  # ...any code that raises an exception
rescue
  puts 'Got an exception'
end

Ez a program nem omlik össze, és kiírja, hogy „Got an exception”. Kilépés helyett a Ruby lefuttatja a rescue blokkban lévő kódot, ami kiír egy üzenetet.

Ahogy a Rubyben minden, a kivételek is objektumok, és általában adatokat tárolnak a kivételről. Így juthatunk hozzá a kivétel objektumához:

begin
  # ...any code that raises an exception
rescue => e
  puts "Exception class: #{ e.class.name }"
  puts "Exception Message:#{e.message}"
end

A Rubyben saját kivételeket is dobhatsz. Például:

begin
  raise ArgumentError.new("Invalid argument")
rescue ArgumentError => e
  puts e.message
end

Az előző kivétel a Ruby beépített kivételei közül való, de egyéni kivételeket is definiálhatsz, és dobhatod őket:

class CustomError < StandardError
end

raise CustomError.new("Something went wrong")

Utasítások

Ebben a feladatban egy egyszerű számológép hibakezelését építed fel.

A cél egy működő számológép, amely a következő mintázatú stringet adja vissza: 16 + 51 = 67, ha a 16, 51 és + argumentumokat kapja.

SimpleCalculator.calculate(16, 51, "+")
# => "16 + 51 = 67"
SimpleCalculator.calculate(32, 6, "*")
# => "32 * 6 = 192"
SimpleCalculator.calculate(512, 4, "/")
# => "512 / 4 = 128"

1. A hibát dobó kód kezelése a calculate metóduson belül

Ebben a részfeladatban a fő megvalósítandó metódus a SimpleCalculator.calculate() osztálymetódus lesz. Három argumentumot vár. Az első két argumentum az a két szám, amelyeken a műveletet elvégzed. A harmadik argumentum string típusú, és ehhez a feladathoz a következő műveleteket kell megvalósítanod:

  • összeadás a + stringgel
  • szorzás a * stringgel
  • osztás a / stringgel

2. A szabálytalan műveletek kezelése

Frissítsd a SimpleCalculator.calculate() metódust, hogy ismeretlen műveleti jelek esetén UnsupportedOperation kivételt dobjon.

SimpleCalculator.calculate(1, 2, '-')
# => Raises an UnsupportedOperation
Note

Ebben a feladatban a UnsupportedOperation kivételt egy adott scope-ra kell definiálnod.

3. Az érvénytelen argumentumok kezelése

Frissítsd a SimpleCalculator.calculate() metódust, hogy érvénytelen argumentumtípusok esetén ArgumentError kivételt dobjon.

SimpleCalculator.calculate(1, '2', '*')
# => Raises an ArgumentError

4. A nullával való osztás kivételeinek kezelése

Frissítsd a SimpleCalculator.calculate() metódust, hogy kezelje a ZeroDivisionError kivételeket. A kezelő kódnak a Division by zero is not allowed. tartalmú stringet kell visszaadnia. A SimpleCalculator.calculate() metódus más kivételt ne kezeljen.

SimpleCalculator.calculate(512, 0, "/")
# => returns "Division by zero is not allowed."
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Ruby Exercism

Készen állsz elkezdeni a(z) Egyszerű számológép feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Ruby nyelvet 21 fogalom121 feladat segítségével, valódi emberi mentorálással, mindez ingyen.