1. Học hỏi
  2. /
  3. Khoa Học
  4. /
  5. Lập trình hướng đối tượng với S3 và R6 trong R

Connected

Bài tập

Cuộc tấn công của các bản sao (2)

Nếu một đối tượng R6 chứa một (hoặc nhiều) đối tượng R6 khác trong các trường của nó, thì mặc định clone() sẽ sao chép các trường R6 theo tham chiếu. Để sao chép các trường R6 đó theo giá trị, cần gọi phương thức clone() với đối số deep = TRUE.

a_deep_copy <- an_r6_object$clone(deep = TRUE)

Hướng dẫn

100 XP

Một lớp R6 PowerPlug mô tả phích cắm điện của lò vi sóng đã được định nghĩa sẵn trong không gian làm việc của bạn. Lớp MicrowaveOven đã được cập nhật để bao gồm một đối tượng PowerPlug.

  • Tạo một đối tượng MicrowaveOven và gán cho a_microwave_oven.
  • Sao chép lò vi sóng vào biến cloned_microwave_oven bằng phương thức clone() mà không truyền đối số.
  • Sao chép lò vi sóng vào biến deep_cloned_microwave_oven bằng phương thức clone() với đối số deep = TRUE.
  • Đổi trường type của trường power_plug trong a_microwave_oven thành "British".
  • Kiểm tra rằng các trường power_plug$type của a_microwave_oven và cloned_microwave_oven là giống hệt nhau.
  • Kiểm tra rằng các trường power_plug$type của a_microwave_oven và deep_cloned_microwave_oven là khác nhau.