더북(TheBook)

이 코드에서 가장 중요한 점은 원래 코드에서 선언한 변수들의 타입이 Deconstruct 호출 시에는 사용되지 않는다는 것이다. 이들 변수의 타입은 타입 추론 시에 고려 대상이 되지 않으며, 이는 다음 세 가지를 의미하는 것이기도 하다.

Deconstruct를 인스턴스 메서드로 작성할 때는 제네릭으로 선언할 수 없다. 사용할 형식 추론 정보가 없기 때문이다.

Deconstruct를 확장 메서드도 작성할 때는 제네릭으로 선언할 수 있다. 컴파일러가 첫 번째 매개변수인 target 인수를 사용하여 타입 인수를 추론할 것이기 때문이다. 하지만 이 첫 번째 매개변수가 타입 추론 시 사용할 수 있는 유일한 매개변수이기도 하다.

Deconstruct 메서드를 오버로딩하면 매개변수의 타입보다 그 개수가 중요하다. 만약 여러 개의 Deconstruct 메서드가 동일한 수의 out 매개변수를 가지고 있다면 어떤 메서드를 호출할지 결정할 수 없기 때문에 컴파일 오류가 발생한다.

필요 이상의 정보를 제공할 필요는 없을 것이므로 이 정도 수준에서 이 주제를 마무리하려고 한다. 이와 관련하여 이해할 수 없는 오류가 발생한다면 앞서 설명한 변환 과정을 문제 상황에 대입해 보기 바란다. 문제가 좀 더 명확히 드러날 것이다.

이것으로 분해에 관해 다룰 내용은 모두 살펴봤다. 이 장의 나머지 부분에서는 패턴 매칭을 살펴볼 것이다. 이론적으로 보자면 패턴 매칭은 분해와는 완전히 별개의 것이지만, 기존의 데이터를 사용하는 새로운 도구를 제공한다는 측면에서 유사하다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.