시작하기무료로 시작하기

클론의 역습 (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_ovenclone() 메서드를 사용해 전자레인지를 cloned_microwave_oven라는 변수에 복사하세요.
  • a_microwave_ovenpower_level_watts 필드를 400으로 변경하세요.
  • a_microwave_ovenassigned_microwave_ovenpower_level_watts 필드가 identical()인지 확인하세요 (docs).
  • a_microwave_ovencloned_microwave_ovenpower_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(___, ___)  
코드 편집 및 실행