Повторение — температуры
Часть раздела Объектно-ориентированное программирование путешествия по R на Coddy. Урок 6 из 57.
Задание
СреднеСоздайте класс 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 = ""))
}
Все уроки раздела Объектно-ориентированное программирование
1Основы S3
Работа с файламиСписки с классомФункции-конструкторыМетоды print и formatВалидаторы и вспомогательные функцииПовторение — температуры4Инкапсуляция в R
Замыкания как объектыОкружения как объектыФункции доступаЗащита состоянияПовторение — парковочный счётчик7S4 Наследование
Расширение с помощью containscallNextMethodВиртуальные классыПроверка типов с помощью is()Повторение — смотритель зоопарка10Шаблоны проектирования, часть 2
Шаблон «Декоратор»Шаблон «Строитель»Шаблон «Состояние»Шаблон «Итератор»2Обобщённые функции и методы S3
Обобщённые функции и UseMethodМетоды по умолчаниюМетоды для базовых обобщённых функцийОсновы NextMethodПовторение — площади фигур5Классы S4
Определение классов S4Слоты и доступПроверка корректностиМетоды showПовторение — каталог товаров8Ссылочные классы
Определение ссылочных классовМетоды и обновление полейСемантика копированияНаследование и callSuperПовторение — очередь задач11Проект: Управление библиотекой
Книги и читателиВыдача книг3Наследование S3
Векторы классовПорядок поиска методовРасширение с помощью NextMethodПроверка с помощью inherits()Повторение — расчёт зарплаты сотрудниковПотренируйтесь самостоятельно: Онлайн-компилятор R