Menu
Coddy logo textTech

Ripasso - Temperature

Fa parte della sezione Programmazione orientata agli oggetti del percorso R di Coddy. Lezione 6 di 57.

challenge icon

Sfida

Medio

Realizza la classe S3 temperature in Temperature.R. Una temperatura è un numero con un attributo unit (C o F).

  • new_temperature(value, unit) verifica i tipi con stopifnot() e restituisce structure(value, unit = unit, class = "temperature").
  • validate_temperature(x) si interrompe con unit must be C or F, oppure con below absolute zero quando il valore è inferiore a -273.15 C o -459.67 F.
  • temperature(value, unit = "C") converte il valore con as.double(), converte l’unità in maiuscolo e restituisce una temperatura convalidata.
  • format.temperature() restituisce 21.5 C con una cifra decimale, mentre print.temperature() stampa Temperature: 21.5 C e restituisce invisible(x).
  • convert_to(t, unit) restituisce una temperatura nell’unità specificata (lo stesso valore se l’unità corrisponde già).

Usa call. = FALSE in ogni stop(). Il codice fornito legge righe 21.5 c F (valore, unità, unità di destinazione), stampa la temperatura e quella convertita, oppure error: e il messaggio.

Il tuo codice va inserito in Temperature.R. main.R contiene il codice di input/output fornito e non può essere modificato.

Provalo tu

source("Temperature.R")

# Supplied input/output code: keep it as it is
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 = ""))
}

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore R online