BaşlayınÜcretsiz başlayın

Klonların Saldırısı (1)

R6 nesneleri, ortamlar (environments) gibi başvuruya göre kopyalama davranışı kullanır. Yani bir R6 nesnesini <- atamasıyla kopyalarsan, bir nesnedeki değişiklikler kopyalarda da yansır.

a_reference_copy <- an_r6_object

R6 nesnelerinde, değerine göre kopya oluşturmak için otomatik olarak üretilen bir clone() metodu vardır; böylece bir kopyadaki değişiklikler diğerlerini etkilemez.

a_value <- an_r6_object$clone()

Bu egzersiz, kursun bir parçasıdır

R'de S3 ve R6 ile Nesne Yönelimli Programlama

Kursa Göz Atın

Egzersiz talimatları

Çalışma alanında microwave_oven_factory olarak bir mikrodalga fırın fabrikası önceden tanımlandı.

  • Bir MicrowaveOven nesnesi oluştur ve a_microwave_oven değişkenine ata.
  • Mikrodalgayı <- atamasıyla assigned_microwave_oven adlı değişkene kopyala.
  • Mikrodalgayı a_microwave_oven'ın clone() metodunu kullanarak cloned_microwave_oven adlı değişkene kopyala.
  • a_microwave_oven'ın power_level_watts alanını 400 olarak değiştir.
  • a_microwave_oven ile assigned_microwave_oven'ın power_level_watts alanlarının identical() olduğunu doğrula (docs).
  • a_microwave_oven ile cloned_microwave_oven'ın power_level_watts alanlarının identical() OLMADIĞINI doğrula (docs).

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

# 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(___, ___)  
Kodu Düzenle ve Çalıştır