클론의 역습 (1)
R6 객체는 environment와 동일하게 참조에 의한 복사 방식을 사용해요. 즉, <- 할당으로 R6 객체를 복사하면, 한 객체에서의 변경이 복사본에도 그대로 반영됩니다.
a_reference_copy <- an_r6_object
R6 객체에는 값에 의한 복사를 위한 clone() 메서드가 자동으로 생성되어 있어요. 이를 사용하면 한 복사본의 변경이 다른 복사본에 영향을 주지 않습니다.
a_value <- an_r6_object$clone()
이 연습은 강의의 일부입니다
R에서 S3와 R6로 배우는 Object-Oriented Programming
연습 안내
작업 공간에는 microwave_oven_factory라는 전자레인지 팩토리가 미리 정의되어 있어요.
MicrowaveOven객체를 생성해a_microwave_oven에 할당하세요.<-할당을 사용해 전자레인지를assigned_microwave_oven라는 변수에 복사하세요.a_microwave_oven의clone()메서드를 사용해 전자레인지를cloned_microwave_oven라는 변수에 복사하세요.a_microwave_oven의power_level_watts필드를400으로 변경하세요.a_microwave_oven와assigned_microwave_oven의power_level_watts필드가identical()인지 확인하세요 (docs).a_microwave_oven와cloned_microwave_oven의power_level_watts필드가identical()이 아닌지 확인하세요 (docs).
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# 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(___, ___)