Özet - Parkmetre
Coddy'nin R Journey'sinin Nesne Tabanlı Programlama bölümünün bir parçası. Ders 21 / 57.
Görev
Ortamake_meter(rate) fabrikasını Meter.R içinde tamamla. rate, bir centin satın aldığı dakika sayısıdır; değişmemesi için fabrika içinde lockBinding() ile kilitle. Sayaç, kalan dakikaları ve ödenen centleri özel değişkenler olarak tutar ve dört fonksiyon döndürür:
insert(cents)yalnızca 10, 20, 50 veya 100 değerlerini kabul eder; diğer durumlardacoin not acceptedile durur. Her bozuk paracents * ratedakika ekler ve ödenen miktara dahil edilir.wait(minutes)zamanın geçmesini sağlar: kalan dakika azalır, ancak hiçbir zaman 0'ın altına inmez. Negatif bir beklemetime cannot go backile durur.status(),12 min leftdöndürür; hiç zaman kalmadığında iseexpireddöndürür.paid(), ödenen centleri döndürür.
call. = FALSE kullan. Sağlanan kod rate değerini okur, ardından coin 20 veya wait 5 satırlarını işler ve her birinden sonra durumu ya da error: ile mesajı yazdırır. Son olarak ödenen miktarı yazdırır ve fabrika ortamının içinde rate değerini değiştirmeyi dener.
Kodun Meter.R içine yazılmalı. main.R, sağlanan giriş/çıkış kodunu içerir ve düzenlenemez.
Kendin dene
source("Meter.R")
# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
input <- suppressWarnings(readLines(file("stdin")))
meter <- make_meter(as.numeric(input[1]))
for (line in input[-1]) {
p <- strsplit(line, " ")[[1]]
msg <- tryCatch({
if (p[1] == "coin") meter$insert(as.numeric(p[2]))
if (p[1] == "wait") meter$wait(as.numeric(p[2]))
meter$status()
}, error = function(e) paste("error:", conditionMessage(e)))
cat(line, ": ", msg, "\n", sep = "")
}
cat("paid: ", meter$paid(), " cents\n", sep = "")
r <- tryCatch({ environment(meter$insert)$rate <- 0; "rate changed" }, error = function(e) "rate is locked")
cat(r, "\n", sep = "")
Nesne Tabanlı Programlama bölümündeki tüm dersler
1S3 Temelleri
Dosyalarla ÇalışmaSınıf ile ListelerYapıcı FonksiyonlarPrint ve Format MetotlarıDoğrulayıcılar ve YardımcılarTekrar - Sıcaklıklar4R'da Kapsülleme
Nesne Olarak Closure'larNesne Olarak OrtamlarErişimci FonksiyonlarDurumu KorumaÖzet - Parkmetre2S3 Generic'leri ve Metotları
Generic'ler ve UseMethodVarsayılan MetotlarTemel Generic'ler için MetotlarNextMethod TemelleriTekrar - Şekil Alanları5S4 Sınıfları
S4 Sınıflarını TanımlamaSlotlar ve ErişimGeçerlilik KontrolleriShow MetotlarıÖzet - Ürün Kataloğu8Referans Sınıfları
Referans Sınıflarını TanımlamaMetotlar ve Alan GüncellemeleriKopyalama SemantiğiKalıtım ve callSuperÖzet - Görev Kuyruğu11Proje: Kütüphane Yönetimi
Kitaplar ve ÜyelerKitap Ödünç AlmaKendi başına pratik yap: Online R derleyicisi