Lasagne

Lasagne

Tanulófeladat

Bevezetés

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.

Változók és konstansok

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"

Osztályok

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

Metódusok

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)

Utasítások

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.

1. Add meg a lasagna várható sütési idejét percekben

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

2. Számítsd ki a hátralévő sütési időt percekben

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

3. Számítsd ki az előkészítési időt percekben

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

4. Számítsd ki a teljes munkával töltött időt percekben

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
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Ruby Exercism

Készen állsz elkezdeni a(z) Lasagne 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.