Lasagne

Lasagne

Lernübung

Einführung

In dieser Übung lernst du die grundlegenden Bausteine von Ruby kennen. Sie deckt eine Menge Stoff ab, aber keine Sorge, wenn es dir zu viel erscheint: Wir gehen auf alles noch viel ausführlicher ein, wenn wir den Track weiter durchlaufen.

Eines der wichtigsten Dinge, die du über Ruby verstehen solltest, ist, dass es eine objektorientierte Sprache ist und dass in Ruby alles ein Objekt ist. Zahlen, Strings, Arrays - sie alle sind Objekte.

Variablen und Konstanten

Wir nutzen Objekte meist, indem wir ihnen Namen geben, entweder über Variablen oder Konstanten.

Variablen werden immer in Snake Case geschrieben. Eine Variable kann im Laufe ihres Lebens auf verschiedene Objekte verweisen. Zum Beispiel kann my_first_variable mit dem Operator = viele Male definiert und neu definiert werden:

my_first_variable = 1
my_first_variable = "Some string"
my_first_variable = SomeComplexObject.new

Konstanten hingegen sind dafür gedacht, nur einmal zugewiesen zu werden. Sie müssen mit einem Großbuchstaben beginnen und werden normalerweise in Großbuchstaben geschrieben, wobei die Wörter durch Unterstriche getrennt sind. Zum Beispiel:

MY_FIRST_CONSTANT = 10

# Redefining not allowed
# MY_FIRST_CONSTANT = "Some String"

Klassen

Ruby ist in Klassen organisiert. Klassen werden mit dem Schlüsselwort class definiert, gefolgt vom Namen der Klasse. Objekte werden in der Regel erstellt, indem man Klassen mit der Methode .new instanziiert. Zum Beispiel:

# Define the class
class Calculator
  #...
end

# Create an instance of it and assign it to a variable
my_first_calc = Calculator.new

Methoden

Funktionseinheiten werden in Methoden gekapselt, ähnlich wie Funktionen in anderen Sprachen.

Eine Methode kann mit Positionsargumenten, Schlüsselwortargumenten (die mit der Syntax : definiert und aufgerufen werden) oder ganz ohne Argumente definiert werden.

Methoden geben entweder implizit das Ergebnis der zuletzt ausgewerteten Anweisung zurück oder explizit ein Objekt über das Schlüsselwort return.

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

Methoden werden mit der Syntax . aufgerufen:

calc = Calculator.new
calc.add(1, 3)
calc.multiply(num1: 2, num2: 5)

Anleitung

In dieser Übung schreibst du etwas Code, um dir zu helfen, eine brillante Lasagne aus deinem Lieblingskochbuch zu kochen.

Du hast vier Aufgaben, die alle mit der Zeit zu tun haben, die du mit dem Kochen der Lasagne verbringst.

1. Definiere die erwartete Ofenzeit in Minuten

Definiere die Konstante Lasagna::EXPECTED_MINUTES_IN_OVEN, die zurückgibt, wie viele Minuten die Lasagne im Ofen bleiben sollte. Laut dem Kochbuch beträgt die erwartete Ofenzeit in Minuten 40:

Lasagna::EXPECTED_MINUTES_IN_OVEN
# => 40

2. Berechne die verbleibende Ofenzeit in Minuten

Definiere die Methode Lasagna#remaining_minutes_in_oven, die die tatsächlichen Minuten, die die Lasagne bereits im Ofen war, als Parameter entgegennimmt und zurückgibt, wie viele Minuten die Lasagne noch im Ofen bleiben muss, basierend auf der erwarteten Ofenzeit in Minuten aus der vorherigen Aufgabe.

lasagna = Lasagna.new
lasagna.remaining_minutes_in_oven(30)
# => 10

3. Berechne die Vorbereitungszeit in Minuten

Definiere die Methode Lasagna#preparation_time_in_minutes, die die Anzahl der Schichten, die du der Lasagne hinzugefügt hast, als Parameter entgegennimmt und zurückgibt, wie viele Minuten du mit der Vorbereitung der Lasagne verbracht hast, wenn man davon ausgeht, dass dich jede Schicht 2 Minuten Vorbereitung kostet.

lasagna = Lasagna.new
lasagna.preparation_time_in_minutes(2)
# => 4

4. Berechne die gesamte Arbeitszeit in Minuten

Definiere die Methode Lasagna#total_time_in_minutes, die zwei benannte Parameter entgegennimmt: der Parameter number_of_layers ist die Anzahl der Schichten, die du der Lasagne hinzugefügt hast, und der Parameter actual_minutes_in_oven ist die Anzahl der Minuten, die die Lasagne im Ofen war. Die Funktion sollte zurückgeben, wie viele Minuten du insgesamt mit dem Kochen der Lasagne verbracht hast, also die Summe aus der Vorbereitungszeit in Minuten und der Zeit in Minuten, die die Lasagne in diesem Moment im Ofen verbracht hat.

lasagna = Lasagna.new
lasagna.total_time_in_minutes(number_of_layers: 3, actual_minutes_in_oven: 20)
# => 26
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Ruby Exercism

Bereit, mit Lasagne zu starten?

Melde dich bei Exercism an, um Ruby mit 21 Konzepte121 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.