이 코드에서 가장 중요한 점은 원래 코드에서 선언한 변수들의 타입이 Deconstruct 호출 시에는 사용되지 않는다는 것이다. 이들 변수의 타입은 타입 추론 시에 고려 대상이 되지 않으며, 이는 다음 세 가지를 의미하는 것이기도 하다.
• Deconstruct를 인스턴스 메서드로 작성할 때는 제네릭으로 선언할 수 없다. 사용할 형식 추론 정보가 없기 때문이다.
• Deconstruct를 확장 메서드도 작성할 때는 제네릭으로 선언할 수 있다. 컴파일러가 첫 번째 매개변수인 target 인수를 사용하여 타입 인수를 추론할 것이기 때문이다. 하지만 이 첫 번째 매개변수가 타입 추론 시 사용할 수 있는 유일한 매개변수이기도 하다.
• Deconstruct 메서드를 오버로딩하면 매개변수의 타입보다 그 개수가 중요하다. 만약 여러 개의 Deconstruct 메서드가 동일한 수의 out 매개변수를 가지고 있다면 어떤 메서드를 호출할지 결정할 수 없기 때문에 컴파일 오류가 발생한다.
필요 이상의 정보를 제공할 필요는 없을 것이므로 이 정도 수준에서 이 주제를 마무리하려고 한다. 이와 관련하여 이해할 수 없는 오류가 발생한다면 앞서 설명한 변환 과정을 문제 상황에 대입해 보기 바란다. 문제가 좀 더 명확히 드러날 것이다.
이것으로 분해에 관해 다룰 내용은 모두 살펴봤다. 이 장의 나머지 부분에서는 패턴 매칭을 살펴볼 것이다. 이론적으로 보자면 패턴 매칭은 분해와는 완전히 별개의 것이지만, 기존의 데이터를 사용하는 새로운 도구를 제공한다는 측면에서 유사하다.