Belajar Memasak
Argumen ketiga untuk R6Class() disebut public dan memuat fungsionalitas yang dihadirkan kepada pengguna. Argumen ini harus berupa list, dengan nama untuk setiap elemennya.
Elemen public dari sebuah kelas R6 berisi fungsionalitas yang tersedia bagi pengguna. Biasanya hanya berisi fungsi-fungsi.
Pola yang diperbarui untuk membuat generator kelas R6 adalah sebagai berikut:
thing_factory <- R6Class(
"Thing",
private = list(
a_field = "a value",
another_field = 123
),
public = list(
do_something = function(x, y, z) {
# Lakukan sesuatu di sini
}
)
)
Latihan ini adalah bagian dari kursus
Pemrograman Berorientasi Objek dengan S3 dan R6 di R
Petunjuk latihan
Sebuah pabrik microwave oven telah didefinisikan sebagian untuk Anda.
- Perbarui elemen
publicdari definisi tersebut untuk menyertakan metodecook.- Metode
cookadalah sebuah fungsi. - Metode ini harus memiliki satu argumen bernama
time_secondsuntuk menyatakan durasi memasak. - Di dalam body metode
cook, Anda harus meneruskantime_secondskeSys.sleep()(docs), yang tidak melakukan apa pun selama waktu yang ditentukan. - Terakhir, metode
cookharus melakukanprint()(docs) terhadap string"Your food is cooked!"
- Metode
- Buat sebuah objek microwave oven bernama
a_microwave_ovenmenggunakan metodenew()milikmicrowave_oven_factory. - Panggil metode
cook()milika_microwave_ovenselama 1 detik.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# Add a cook method to the factory definition
microwave_oven_factory <- R6Class(
"MicrowaveOven",
private = list(
power_rating_watts = 800
),
public = list(
___ = ___(___) {
___
___
}
)
)
# Create microwave oven object
a_microwave_oven <- ___
# Call cook method for 1 second
___