Menu
CoddyTech

Ôn tập: nhiệt độ

Thuộc phần Lập trình hướng đối tượng trong hành trình R của Coddy. Bài học 6 trên 57.

challenge icon

Thử thách

Trung bình

Xây dựng lớp S3 temperature trong Temperature.R. Nhiệt độ là một số có thuộc tính unit (C hoặc F).

  • new_temperature(value, unit) kiểm tra kiểu dữ liệu bằng stopifnot() và trả về structure(value, unit = unit, class = "temperature").
  • validate_temperature(x) dừng lại với thông báo unit must be C or F, hoặc với thông báo below absolute zero khi giá trị thấp hơn -273.15 C hoặc -459.67 F.
  • temperature(value, unit = "C") chuyển đổi giá trị bằng as.double(), viết hoa đơn vị và trả về một nhiệt độ đã được xác thực.
  • format.temperature() trả về 21.5 C với một chữ số thập phân, còn print.temperature() in ra Temperature: 21.5 C và trả về invisible(x).
  • convert_to(t, unit) trả về nhiệt độ theo đơn vị đã cho (giữ nguyên giá trị nếu đơn vị đã khớp).

Dùng call. = FALSE trong mọi stop(). Code được cung cấp đọc các dòng 21.5 c F (giá trị, đơn vị, đơn vị đích), in ra nhiệt độ và nhiệt độ đã chuyển đổi, hoặc error: cùng thông báo lỗi.

Viết code của bạn trong Temperature.R. main.R chứa code đầu vào/đầu ra được cung cấp và bạn không thể chỉnh sửa tệp này.

Tự làm thử

source("Temperature.R")

# Đoạn code đầu vào/đầu ra đã cho: giữ nguyên
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 = ""))
}

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Trình biên dịch R online