1. Učit se
  2. /
  3. Kurzy
  4. /
  5. Objektově orientované programování s S3 a R6 v R

Connected

Cvičení

Útok klonů (2)

Pokud R6 objekt obsahuje v jednom nebo více polích jiný R6 objekt, metoda clone() ve výchozím nastavení zkopíruje tato R6 pole odkazem. Aby došlo ke kopírování hodnotou, je nutné zavolat metodu clone() s argumentem deep = TRUE.

a_deep_copy <- an_r6_object$clone(deep = TRUE)

Pokyny

100 XP

V tvém pracovním prostoru je předem definovaná R6 třída PowerPlug popisující zástrčku mikrovlnné trouby. Třída MicrowaveOven byla aktualizována tak, aby obsahovala objekt PowerPlug.

  • Vytvoř objekt třídy MicrowaveOven a přiřaď ho do proměnné a_microwave_oven.
  • Zkopíruj mikrovlnnou troubu do proměnné cloned_microwave_oven pomocí metody clone() bez argumentů.
  • Zkopíruj mikrovlnnou troubu do proměnné deep_cloned_microwave_oven pomocí metody clone() s argumentem deep = TRUE.
  • Změň pole type v poli power_plug objektu a_microwave_oven na hodnotu "British".
  • Ověř, že pole power_plug$type objektů a_microwave_oven a cloned_microwave_oven jsou shodná.
  • Ověř, že pole power_plug$type objektů a_microwave_oven a deep_cloned_microwave_oven se liší.