Menu
Coddy logo textTech

Повторение — температуры

Часть раздела Объектно-ориентированное программирование путешествия по R на Coddy. Урок 6 из 57.

challenge icon

Задание

Средне

Создайте класс S3 temperature в файле Temperature.R. Температура — это число с атрибутом unit (C или F).

  • new_temperature(value, unit) проверяет типы с помощью stopifnot() и возвращает structure(value, unit = unit, class = "temperature").
  • validate_temperature(x) завершается с сообщением unit must be C or F или с сообщением below absolute zero, если значение ниже -273.15 C или -459.67 F.
  • temperature(value, unit = "C") преобразует значение с помощью as.double(), переводит единицу измерения в верхний регистр и возвращает проверенную температуру.
  • format.temperature() возвращает 21.5 C с одним знаком после запятой, а print.temperature() выводит Temperature: 21.5 C и возвращает invisible(x).
  • convert_to(t, unit) возвращает температуру в заданной единице измерения (то же значение, если единица измерения уже совпадает).

Используйте call. = FALSE в каждом вызове stop(). Предоставленный код считывает строки 21.5 c F (значение, единица измерения, целевая единица измерения), выводит температуру и преобразованную температуру либо error: и сообщение.

Ваш код должен находиться в Temperature.R. В main.R содержится предоставленный код ввода/вывода, и его нельзя редактировать.

Попробуйте сами

source("Temperature.R")

# Предоставленный код ввода/вывода: оставьте его как есть
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 = ""))
}

Все уроки раздела Объектно-ориентированное программирование

Потренируйтесь самостоятельно: Онлайн-компилятор R