3.2 변수와 상수
스위프트는 데이터가 저장되는 메모리 내 주소 공간을 개발자가 쉽게 인식하고 사용할 수 있도록 변수와 상수를 제공합니다. 값을 저장한, 혹은 저장할 메모리 주소값을 이름으로 연결해 놓은 것을 변수와 상수라고 합니다.
우리는 변수와 상수를 이용하여 메모리 주소에 해당하는 공간에 손쉽게 값을 저장하거나 꺼낼 수 있습니다. 일반적으로 이같은 과정을 떠올리는 대신 변수와 상수에 값을 저장한다라고 생각해도 무방합니다.
변수와 상수는 값을 저장할 수 있다는 공통점이 있지만, 상수는 한 번 저장된 값을 다른 값으로 변경할 수 없는 반면에 변수는 필요에 따라 저장된 값을 몇 번이라도 다른 값으로 변경할 수 있습니다. 그래서 변수에는 프로그램의 실행에 따라 변하는 값을 저장하고, 상수에는 변하지 않을 값을 저장합니다.
하지만 변수라고 해서 아무 값이나 마음대로 저장할 수 있는 것은 아닙니다. 변수의 값을 변경할 때에는 처음 저장했던 값과 일치하는 타입이어야 합니다. 즉 변수는 처음 입력한 값과 동일한 타입에 한해서만 값을 변경할 수 있습니다. 변경할 값이 처음 저장된 값과 일치하는 형태인지는 곧이어 자료형을 배우고 나면 알게 될 겁니다.
이쯤에서 상수가 왜 필요한지에 대해 궁금한 독자들이 있을지도 모르겠습니다. 변수에 값을 저장해 놓고 변경하지 않으면 그만이지, 왜 굳이 상수가 있어야 하냐 하고 말이죠. 하지만 성능이나 기타 다른 기술적 이점은 차치하고라도, 프로그래밍 소스 관리 목적상 변하지 않는 값은 상수에 저장하는 것이 훨씬 효율적입니다. 실수로 값이 변경되는 일도 막을 수 있고, 값의 성격이 명확히 분류되므로 관리하기에도 용이하기 때문입니다.
어떤 경우에 변수를 사용하고 어떤 경우에 상수를 사용할지 기준이 모호하다면 일단 변수로 작성하면 됩니다. 스위프트에서는 변수에 한번 할당된 이후로 소스 코드에서 변경되지 않은 값이 있을 경우 이를 상수로 바꾸도록 컴파일러가 조언해줍니다. 이 조언에 따라 적절히 상수와 변수를 조절하다 보면 변수와 상수의 선택 기준에 대해 이해하게 될 것입니다.
Last updated