더북(TheBook)

지금까지 살펴본 내용만으로도 충분하지만 지역 변수에 값을 할당하는 것 이상의 작업도 가능하다. 독립적인 문장으로 코드를 작성할 때 유효한 할당문이라면 분해 시에도 동일하게 사용할 수 있다. 이 말은 필드, 속성, 인덱서를 이용한 할당문뿐만 아니라 배열과 다른 객체에 대한 할당도 가능하다는 것을 의미한다.

» 선언 혹은 할당: 함께 사용할 수 없음


분해 시에 변수를 선언하고 초기화하거나 순차적으로 값을 할당할 수는 있지만, 이 둘을 함께 사용할 수는 없다. 예를 들어 다음 코드는 유효하지 않다.

int x;
(x, int y) = (1, 2);

하지만 기존에 선언된 지역 변수, 필드, 속성 등에 값을 할당하는 것은 얼마든지 가능하다.

일반적인 할당문에서도 버림(_ 식별자)에 값을 할당할 수 있다. 그리고 해당 변수가 선언된 범위 내에서 그 값을 사용하지 않으면 효과적으로 이 변수를 무시할 수 있다. 일반 할당문을 통해 버림 식별자를 이미 사용했다면 분해 기능 내부에서도 버림(_ 식별자)에 값을 할당한다.

» 분해 시 _의 의미: 할당 혹은 버림?


처음 보기에 이는 다소 혼돈스럽다. _라는 이름의 변수가 이미 선언되어 있었다면 분해 시에 기존 값을 덮어 쓰고, 선언된 적이 없다면 값을 무시하기 때문이다. 이러한 혼돈을 피하는 두 가지 방법이 있다. 첫 번째 방법은 분해를 수행하는 코드 이외의 다른 코드를 살펴보는 것이다. 만약 다른 부분에서 _ 변수가 선언된 적이 없다면 _는 버림이 된다. 만약 다른 부분에서 _에 값을 할당한 적이 있다면 _로 값이 할당된다.

혼돈을 피하기 위한 두 번째 방법은 지역 변수 이름으로 _를 사용하지 않는 것이다.

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