1. 学ぶ
  2. /
  3. コース
  4. /
  5. R における S3 と R6 を使ったオブジェクト指向プログラミング

Connected

演習

クローンの逆襲 (2)

R6 オブジェクトが、そのフィールドの一部または全部に別の R6 オブジェクトを含む場合、既定では clone() はそれらの R6 フィールドを参照でコピーします。これらの R6 フィールドを値でコピーするには、clone() メソッドに引数 deep = TRUE を指定して呼び出す必要があります。

a_deep_copy <- an_r6_object$clone(deep = TRUE)

指示

100 XP

電子レンジの電源プラグを表す PowerPlug R6 クラスが、ワークスペースにあらかじめ用意されています。MicrowaveOven クラスは PowerPlug オブジェクトを含むように更新されています。

  • MicrowaveOven オブジェクトを作成し、a_microwave_oven に代入します。
  • 引数なしで clone() メソッドを使い、電子レンジを cloned_microwave_oven という変数にコピーします。
  • clone() メソッドに deep = TRUE を渡して、電子レンジを deep_cloned_microwave_oven という変数にコピーします。
  • a_microwave_oven の power_plug フィールドの type を "British" に変更します。
  • a_microwave_oven と cloned_microwave_oven の power_plug$type フィールドが同一であることを確認します。
  • a_microwave_oven と deep_cloned_microwave_oven の power_plug$type フィールドが異なることを確認します。