Powtórzenie — temperatury
Część sekcji Programowanie obiektowe ścieżki R w Coddy. Lekcja 6 z 57.
Wyzwanie
ŚredniZbuduj 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 zwracastructure(value, unit = unit, class = "temperature").validate_temperature(x)kończy działanie komunikatemunit must be C or Falbo komunikatembelow 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()zwraca21.5 Cz jednym miejscem po przecinku, aprint.temperature()wyświetlaTemperature: 21.5 Ci zwracainvisible(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
1Podstawy S3
Praca z plikamiListy z klasąFunkcje konstruktoraMetody print i formatWalidatory i funkcje pomocniczePowtórzenie — temperatury4Enkapsulacja w R
Domknięcia jako obiektyŚrodowiska jako obiektyFunkcje dostępoweOchrona stanuPodsumowanie – parkometr2Generics i metody S3
Generics i UseMethodMetody domyślneMetody dla podstawowych genericsPodstawy NextMethodPowtórzenie — pola figur5Klasy S4
Definiowanie klas S4Sloty i dostępSprawdzanie poprawnościMetody wyświetlaniaPodsumowanie – katalog produktów8Klasy referencyjne
Definiowanie klas referencyjnychMetody i aktualizacja pólSemantyka kopiowaniaDziedziczenie i callSuperPodsumowanie – kolejka zadań11Projekt: Zarządzanie biblioteką
Książki i czytelnicyWypożyczanie książek3Dziedziczenie S3
Wektory klasKolejność wyszukiwania metodRozszerzanie za pomocą NextMethodSprawdzanie za pomocą inherits()Powtórzenie — lista płac pracownikówPoćwicz samodzielnie: Kompilator R online