MulaiMulai sekarang secara gratis

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

Lihat Kursus

Petunjuk latihan

Sebuah pabrik oven microwave telah didefinisikan sebelumnya di ruang kerja Anda sebagai microwave_oven_factory.

  • Buat objek MicrowaveOven dan simpan ke a_microwave_oven.
  • Salin oven microwave ke variabel bernama assigned_microwave_oven menggunakan penugasan <-.
  • Salin oven microwave ke variabel bernama cloned_microwave_oven menggunakan metode clone() milik a_microwave_oven.
  • Ubah field power_level_watts pada a_microwave_oven menjadi 400.
  • Verifikasi bahwa field power_level_watts pada a_microwave_oven dan assigned_microwave_oven adalah identical() (docs).
  • Verifikasi bahwa field power_level_watts pada a_microwave_oven dan cloned_microwave_oven tidak identical() (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(___, ___)  
Edit dan Jalankan Kode