[균등 테스팅과 할당]
: 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 방식을 사용하는 경우는 드물다.
'[프로그래밍 언어론]' 카테고리의 다른 글
프로그래밍 언어론 7-3-1강. 일반화된 서브루틴과 클래스(Generic Subroutine and Classes) (0) | 2019.12.15 |
---|---|
프로그래밍 언어론 7-3강. 파리미터의 다형성 (Parametric Polymorphism) (0) | 2019.12.15 |
프로그래밍 언어론 7-2-3강. 타입 추론(Type Inference) (0) | 2019.12.14 |
프로그래밍 언어론 7-2-2강. 타입 호환성(Type Compatibility) (0) | 2019.12.13 |
프로그래밍 언어론 7-2-1강. 타입 동등성(Type Equivalence) (0) | 2019.12.13 |