EmpezarEmpieza gratis

El ataque de los clones (1)

Los objetos R6 usan el mismo comportamiento de copia por referencia que los entornos. Es decir, si copias un objeto R6 usando la asignación <-, los cambios en un objeto también se reflejarán en sus copias.

a_reference_copy <- an_r6_object

Los objetos R6 tienen un método clone() generado automáticamente que se usa para crear una copia por valor, de modo que los cambios en una copia no afecten a las demás.

a_value <- an_r6_object$clone()

Este ejercicio forma parte del curso

Programación orientada a objetos con S3 y R6 en R

Ver curso

Instrucciones del ejercicio

En tu espacio de trabajo ya hay una fábrica de microondas predefinida como microwave_oven_factory.

  • Crea un objeto MicrowaveOven y asígnalo a a_microwave_oven.
  • Copia el microondas en una variable llamada assigned_microwave_oven usando la asignación <-.
  • Copia el microondas en una variable llamada cloned_microwave_oven usando el método clone() de a_microwave_oven.
  • Cambia el campo power_level_watts de a_microwave_oven a 400.
  • Verifica que los campos power_level_watts de a_microwave_oven y assigned_microwave_oven sean identical() (docs).
  • Verifica que los campos power_level_watts de a_microwave_oven y cloned_microwave_oven no sean identical() (docs).

ejercicio interactivo práctico

Prueba este ejercicio completando este código de ejemplo.

# 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(___, ___)  
Editar y ejecutar código