Comece agoraComece grátis

Ataque dos Clones (1)

Objetos R6 usam o mesmo comportamento de cópia por referência que ambientes. Ou seja, se você copiar um objeto R6 usando a atribuição <-, então mudanças em um objeto também serão refletidas nas cópias.

a_reference_copy <- an_r6_object

Objetos R6 têm um método clone() gerado automaticamente, usado para criar uma cópia por valor, de modo que mudanças em uma cópia não afetam as outras.

a_value <- an_r6_object$clone()

Este exercicio faz parte do curso

Programação Orientada a Objetos com S3 e R6 em R

Ver curso

Instruções do exercicio

Uma fábrica de fornos de micro-ondas foi predefinida no seu ambiente como microwave_oven_factory.

  • Crie um objeto MicrowaveOven e atribua-o a a_microwave_oven.
  • Copie o micro-ondas para uma variável chamada assigned_microwave_oven usando a atribuição <-.
  • Copie o micro-ondas para uma variável chamada cloned_microwave_oven usando o método clone() de a_microwave_oven.
  • Altere o campo power_level_watts de a_microwave_oven para 400.
  • Verifique se os campos power_level_watts de a_microwave_oven e assigned_microwave_oven são identical() (docs).
  • Verifique se os campos power_level_watts de a_microwave_oven e cloned_microwave_oven não são identical() (docs).

exercicio interativo prático

Tente este exercicio completando este código de exemplo.

# 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 e Executar Código