Menu
CoddyTech

Ulasan: Suhu

Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan R di Coddy. Pelajaran 6 dari 57.

challenge icon

Tantangan

Sedang

Buat class S3 temperature di Temperature.R. Suhu adalah angka dengan atribut unit (C atau F).

  • new_temperature(value, unit) memeriksa tipe dengan stopifnot() dan mengembalikan structure(value, unit = unit, class = "temperature").
  • validate_temperature(x) menghentikan proses dengan unit must be C or F, atau dengan below absolute zero jika nilainya di bawah -273.15 C atau -459.67 F.
  • temperature(value, unit = "C") mengonversi nilai dengan as.double(), mengubah unit menjadi huruf kapital, lalu mengembalikan suhu yang sudah divalidasi.
  • format.temperature() mengembalikan 21.5 C dengan satu angka di belakang koma, dan print.temperature() mencetak Temperature: 21.5 C lalu mengembalikan invisible(x).
  • convert_to(t, unit) mengembalikan suhu dalam unit yang diberikan, dengan nilai yang sama jika unitnya sudah cocok.

Gunakan call. = FALSE di setiap stop(). Kode yang disediakan membaca baris 21.5 c F (nilai, unit, unit tujuan), mencetak suhu dan hasil konversinya, atau error: dan pesannya.

Tulis kodemu di Temperature.R. main.R berisi kode input/output yang disediakan dan tidak boleh diedit.

Coba sendiri

source("Temperature.R")

# Kode input/output yang disediakan: biarkan apa adanya
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 = ""))
}

Semua pelajaran di Pemrograman Berorientasi Object

Latihan sendiri: Compiler R online