Ez a feladat a Ruby alapvető építőelemeit mutatja be. Sok mindent átfog, de ne aggódj, ha elsőre soknak tűnik: ahogy haladunk előre a kurzuson, mindenbe sokkal mélyebben is belemegyünk.
A Rubyval kapcsolatban az egyik kulcsfontosságú dolog, amit meg kell értened, hogy egy objektumorientált nyelv, és hogy a Rubyban minden egy objektum. A számok, a stringek, a tömbök: mind objektumok.
Az objektumokat jellemzően úgy használjuk, hogy nevet adunk nekik, akár változók, akár konstansok segítségével.
A változókat mindig snake case stílusban írjuk.
Egy változó az élettartama során különböző objektumokra hivatkozhat.
Például a my_first_variable a = operátorral sokszor definiálható és újradefiniálható:
my_first_variable = 1
my_first_variable = "Some string"
my_first_variable = SomeComplexObject.new
A konstansok viszont arra valók, hogy csak egyszer kapjanak értéket. Nagybetűvel kell kezdődniük, és általában csupa nagybetűvel írjuk őket, a szavakat alulvonással elválasztva. Például:
MY_FIRST_CONSTANT = 10
# Redefining not allowed
# MY_FIRST_CONSTANT = "Some String"
A Ruby osztályokba szerveződik.
Az osztályokat a class kulcsszóval definiáljuk, amelyet az osztály neve követ.
Az objektumokat általában úgy hozzuk létre, hogy az osztályokat a .new metódussal példányosítjuk.
Például:
# Define the class
class Calculator
#...
end
# Create an instance of it and assign it to a variable
my_first_calc = Calculator.new
A funkcionalitás egységeit metódusokba zárjuk, hasonlóan más nyelvek függvényeihez.
Egy metódus definiálható pozicionális argumentumokkal, kulcsszó-argumentumokkal (amelyeket a : szintaxissal definiálunk és hívunk meg), vagy egyáltalán nem lehet argumentuma.
A metódusok vagy implicit módon visszaadják az utoljára kiértékelt utasítás eredményét, vagy a return kulcsszóval explicit módon visszaadhatnak egy objektumot.
class Calculator
# Positional arguments
def add(num1, num2)
return num1 + num2 # Explicit return
end
# Keyword arguments
def multiply(num1:, num2:)
num1 * num2 # Implicit return
end
end
A metódusokat a . szintaxissal hívjuk meg:
calc = Calculator.new
calc.add(1, 3)
calc.multiply(num1: 2, num2: 5)
Ebben a feladatban olyan kódot írsz, amivel egy remek lasagnét készíthetsz a kedvenc szakácskönyvedből.
Négy részfeladat vár rád, és mindegyik a lasagna elkészítésével töltött időhöz kapcsolódik.
Definiáld a Lasagna::EXPECTED_MINUTES_IN_OVEN konstanst, amely visszaadja, hány percig kell a lasagnának a sütőben lennie. A szakácskönyv szerint a várható sütési idő 40 perc:
Lasagna::EXPECTED_MINUTES_IN_OVEN
# => 40
Definiáld a Lasagna#remaining_minutes_in_oven metódust, amely paraméterként megkapja, hogy a lasagna hány perce van már a sütőben, és visszaadja, hány percig kell még a sütőben maradnia, az előző részfeladatban megadott várható sütési idő alapján.
lasagna = Lasagna.new
lasagna.remaining_minutes_in_oven(30)
# => 10
Definiáld a Lasagna#preparation_time_in_minutes metódust, amely paraméterként megkapja a lasagnába tett rétegek számát, és visszaadja, hány percet töltöttél a lasagna előkészítésével, feltételezve, hogy egy réteg előkészítése 2 percet vesz igénybe.
lasagna = Lasagna.new
lasagna.preparation_time_in_minutes(2)
# => 4
Definiáld a Lasagna#total_time_in_minutes metódust, amely két névvel ellátott paramétert kap: a number_of_layers paraméter a lasagnába tett rétegek száma, az actual_minutes_in_oven paraméter pedig az, hogy a lasagna hány perce van a sütőben. A függvény adja vissza, hogy összesen hány percet dolgoztál a lasagna elkészítésén, ami az előkészítési idő és a lasagna által a sütőben eddig eltöltött idő összege.
lasagna = Lasagna.new
lasagna.total_time_in_minutes(number_of_layers: 3, actual_minutes_in_oven: 20)
# => 26
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.