프로그래밍 언어론 7-4강. 균등 테스팅과 할당(Equality Testing and Assignment)

[프로그래밍 언어론]

2019. 12. 15. 17:35

 

[균등 테스팅과 할당]

: primitive 데이터 타입에서의 균등 테스팅과 할당은 상대적으로 명백한 시맨틱과 실행으로 직관적인 연산이다.

: 좀더 복잡하고 추상적인 데이터 타입은, 시맨틱과 실행에 대해 미묘함이 발생한다.

 

# 두 데이터 비교

s == t   // s와 t의 주소 값을 비교하는 코드

streamp(s,t)  // s와 t의 내용을 비교하는 코드

: 두 균등 테스팅의 차이에 대해 알기

 

 

[비교 방법]

1) shallow comparison : 주소값을 기준으로 비교한다.   ex) a == b의 방법

2) deep comparison : 내용을 기준으로 비교한다.  ex) clone(), equals()의 방법

 

# 비교 방법에 따른 값 비교

A a = new A();

A b = a;        // 방식에 따라 다른 할당 방식

: shallow 할당은 b = a가 객체에 대한 주소값 참조 한다.

: deep 할당은 b = a가 a의 객체를 copy 한다.

 

 

 

[언어에 따른 할당 방법]

: 대부분의 언어가 shallow comparison과 shallow assignment 방식을 지원한다.

: deep 방식을 사용하는 경우는 드물다.