Serangan Para Klon (1)
Objek R6 menggunakan perilaku penyalinan berdasarkan referensi seperti pada environment. Artinya, jika Anda menyalin objek R6 menggunakan penugasan <-, maka perubahan pada satu objek akan tercermin pada salinannya juga.
a_reference_copy <- an_r6_object
Objek R6 memiliki metode clone() yang dibuat secara otomatis untuk membuat salinan berdasarkan nilai, sehingga perubahan pada satu salinan tidak memengaruhi salinan lainnya.
a_value <- an_r6_object$clone()
Latihan ini adalah bagian dari kursus
Pemrograman Berorientasi Objek dengan S3 dan R6 di R
Petunjuk latihan
Sebuah pabrik oven microwave telah didefinisikan sebelumnya di ruang kerja Anda sebagai microwave_oven_factory.
- Buat objek
MicrowaveOvendan simpan kea_microwave_oven. - Salin oven microwave ke variabel bernama
assigned_microwave_ovenmenggunakan penugasan<-. - Salin oven microwave ke variabel bernama
cloned_microwave_ovenmenggunakan metodeclone()milika_microwave_oven. - Ubah field
power_level_wattspadaa_microwave_ovenmenjadi400. - Verifikasi bahwa field
power_level_wattspadaa_microwave_ovendanassigned_microwave_ovenadalahidentical()(docs). - Verifikasi bahwa field
power_level_wattspadaa_microwave_ovendancloned_microwave_oventidakidentical()(docs).
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# Create a microwave oven
a_microwave_oven <- microwave_oven_factory$new()
# Copy a_microwave_oven using <-
assigned_microwave_oven <- ___
# Copy a_microwave_oven using clone()
cloned_microwave_oven <- ___$___()
# Change a_microwave_oven's power level
___ <- ___
# Check a_microwave_oven & assigned_microwave_oven same
identical(___, ___)
# Check a_microwave_oven & cloned_microwave_oven different
identical(___, ___)