Menu
Coddy logo textTech

Rückblick – Temperaturen

Teil des Abschnitts Objektorientierte Programmierung der R-Journey von Coddy. Lektion 6 von 57.

challenge icon

Aufgabe

Mittel

Erstelle die S3-Klasse temperature in Temperature.R. Eine Temperatur ist eine Zahl mit einem Attribut unit (C oder F).

  • new_temperature(value, unit) prüft die Typen mit stopifnot() und gibt structure(value, unit = unit, class = "temperature") zurück.
  • validate_temperature(x) bricht mit unit must be C or F ab oder mit below absolute zero, wenn der Wert unter -273.15 C oder -459.67 F liegt.
  • temperature(value, unit = "C") konvertiert den Wert mit as.double(), wandelt die Einheit in Großbuchstaben um und gibt eine validierte Temperatur zurück.
  • format.temperature() gibt 21.5 C mit einer Dezimalstelle zurück, und print.temperature() gibt Temperature: 21.5 C aus und gibt invisible(x) zurück.
  • convert_to(t, unit) gibt eine Temperatur in der angegebenen Einheit zurück (denselben Wert, wenn die Einheit bereits übereinstimmt).

Verwende call. = FALSE in jedem stop(). Der bereitgestellte Code liest Zeilen 21.5 c F (Wert, Einheit, Zieleinheit), gibt die Temperatur und die umgerechnete Temperatur aus oder error: und die Meldung.

Dein Code gehört in Temperature.R. main.R enthält den bereitgestellten Eingabe-/Ausgabecode und darf nicht bearbeitet werden.

Probier es selbst

source("Temperature.R")

# Bereitgestellter Ein-/Ausgabe-Code: belasse ihn wie er ist
input <- suppressWarnings(readLines(file("stdin")))
for (line in input) {
  p <- strsplit(line, " ")[[1]]
  result <- tryCatch({
    t <- temperature(p[1], p[2])
    print(t)
    print(convert_to(t, p[3]))
    NULL
  }, error = function(e) cat("error: ", conditionMessage(e), "\n", sep = ""))
}

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-R-Compiler