Menu
Coddy logo textTech

Powtórzenie — temperatury

Część sekcji Programowanie obiektowe ścieżki R w Coddy. Lekcja 6 z 57.

challenge icon

Wyzwanie

Średni

Zbuduj klasę S3 temperature w pliku Temperature.R. Temperatura to liczba z atrybutem unit (C lub F).

  • new_temperature(value, unit) sprawdza typy za pomocą stopifnot() i zwraca structure(value, unit = unit, class = "temperature").
  • validate_temperature(x) kończy działanie komunikatem unit must be C or F albo komunikatem below absolute zero, gdy wartość jest niższa niż -273.15 C lub -459.67 F.
  • temperature(value, unit = "C") konwertuje wartość za pomocą as.double(), zamienia jednostkę na wielkie litery i zwraca zwalidowaną temperaturę.
  • format.temperature() zwraca 21.5 C z jednym miejscem po przecinku, a print.temperature() wyświetla Temperature: 21.5 C i zwraca invisible(x).
  • convert_to(t, unit) zwraca temperaturę w podanej jednostce (tę samą wartość, jeśli jednostka już się zgadza).

Użyj call. = FALSE w każdym wywołaniu stop(). Dostarczony kod odczytuje wiersze 21.5 c F (wartość, jednostka, jednostka docelowa), wyświetla temperaturę i temperaturę po konwersji albo error: wraz z komunikatem.

Umieść swój kod w pliku Temperature.R. Plik main.R zawiera dostarczony kod wejścia/wyjścia i nie można go edytować.

Spróbuj swoich sił

source("Temperature.R")

# Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
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 = ""))
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator R online