더북(TheBook)

이 코드가 컴파일이 제대로 수행되는 코드라면, 튜플이나 분해와 관련된 내용을 알지 못하더라도 어떤 내용을 출력할 것인지 쉽게 예상할 수 있다.

a: 10; b: text
c: 10; d: text
e: 10; f: text

이 코드에서는 새로운 방법을 이용하여 이전보다 훨씬 적은 코드로 여섯 개의 변수(a, b, c, d, e, f)를 선언하고 초기화했다. 다소 미묘한 차이가 있기는 하지만, 이렇게 짧게 코드를 작성해도 기능의 유용성이 훼손되지는 않는다. 대부분의 분해 작업은 튜플의 값을 변수로 복사하는 것만큼이나 간단하다. 그리고 이렇게 분해된 변수들은 튜플과의 연관성이 없으므로 변수의 값을 바꾸더라도 튜플의 값이 바뀌지는 않는다. 그 반대도 마찬가지다.

» 튜플 선언 문법과 튜플 분해 문법


튜플 분해를 위한 언어 명세는 튜플의 다른 기능과도 밀접하다. 분해를 위한 문법 구조는 실제로 튜플을 분해하는 것이 아니더라도(12.2절에서 살펴본다.) 튜플 표현식의 관점에서 설명할 것이다. 이에 대해 과도하게 걱정할 필요는 없지만 조금 혼돈스러울 수도 있음을 알아 두면 좋겠다. 다음 두 문장을 살펴보라.

(int c, string d) = tuple;
(int c, string d) x = tuple;

첫 번째 문장은 두 개의 새로운 변수(cd)로 tuple을 분해하는 구문이며, 두 번째 문장은 (int c, string d) 튜플 타입의 변수 x를 선언하는 구문이다. 이러한 유사성이 언어 설계의 문제라고 생각하지는 않지만, 표현식 본문 멤버와 람다 표현식을 구분할 때처럼 익숙해지려면 다소 시간이 필요하다.

한 문장으로 변수를 선언하고 초기화하는 앞 예제의 첫 번째 두 부분을 좀 더 자세히 살펴보자.

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