Menu
Coddy logo textTech

Revisão - Temperaturas

Parte da seção Programação Orientada a Objetos do Journey de R da Coddy. Lição 6 de 57.

challenge icon

Desafio

Médio

Crie a classe S3 temperature em Temperature.R. Uma temperatura é um número com um atributo unit (C ou F).

  • new_temperature(value, unit) verifica os tipos com stopifnot() e retorna structure(value, unit = unit, class = "temperature").
  • validate_temperature(x) interrompe com unit must be C or F, ou com below absolute zero quando o valor está abaixo de -273.15 C ou -459.67 F.
  • temperature(value, unit = "C") converte o valor com as.double(), converte a unidade para maiúsculas e retorna uma temperatura validada.
  • format.temperature() retorna 21.5 C com uma casa decimal, e print.temperature() imprime Temperature: 21.5 C e retorna invisible(x).
  • convert_to(t, unit) retorna uma temperatura na unidade fornecida (o mesmo valor quando a unidade já corresponde).

Use call. = FALSE em cada stop(). O código fornecido lê linhas 21.5 c F (valor, unidade, unidade de destino), imprime a temperatura e a temperatura convertida, ou error: e a mensagem.

Seu código deve ficar em Temperature.R. main.R contém o código fornecido de entrada/saída e não pode ser editado.

Experimente você mesmo

source("Temperature.R")

# Código de entrada/saída fornecido: mantenha-o como está
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 = ""))
}

Todas as lições de Programação Orientada a Objetos

Pratique por conta própria: Compilador de R online