본문 바로가기

Programming/Swift for Beginners

[Swift] 006 Constants are consistent (상수는 변하지 않는 값) for beginners


변수는 시간이 자나면서 값이 변할 수 있기 때문에 많은 부분에서 유용합니다. 루프를 반복하거나 임시 숫자, 문자열, 추후에 다루게 될 다른 객체를 가지거나 할 때 변수가 많은 도움이 됩니다.

값을 가질 수 있는 Swift의 또 다른 구조체는 상수입니다. 상수는 이름 자체가 상수의 뜻을 함축하고 있습니다. 상수는 변함없이 계속해서 하나의 값만 가집니다. 변수와는 달리 상사의 값은 일단 할당되면 바꿀 수 없습니다. 말 그대로 제자리에 고정된 것입니다. 그리고 변수처럼 상수도 타입이 있으며 타입이 한 번 할당되면 절대 변하지 않습니다.

새로운 변수를 선언하고 새로운 상수 z 를 변수 x의 값에 할당해 상수가 실행되는 내용을 살펴보겠습니다.


let 명령어를 사용했습니다. let 키워드는 Swift 에서 상수를 정의할 때 사용됩니다. 상수 z는 x의 값 42와 정수라는 타입도 가제게 되었습니다.

만약 상수가 진정으로 상수라면 다른 숫자나 변수를 상수에 할당할 수 없을 것입니다.


상수 z를 다른 값에 다시 할당하려고 하니 에러가 발생했습니다. Swift가 에러 내용이 무엇인지 자세하게 설명을 해주네요.

그럼 Swift는 왜 상수와 변수 모두를 가지는 것일까요? 변수는 변할 수 있으니 좀 더 유연하고 상수는 변하지 않는 값을 가지고 있어 유연하지 않은 것일까요? 이 질문에 대한 답은 컴파일러 기술에서 찾아볼 수 있습니다. Swift 컴파일러는 값을 가지고 있는 메모리의 위치가 변하지 않는다는 것을 알게 되면 코드를 최적화하고 더 나은 결정을 내릴 수 있습니다. 이 점을 기억하면서 상수를 사용하면 됩니다. 어느 시점에서 값이 변할 것이라고 확실하게 예상이 되는 경우에만 변수를 사용하면 됩니다. 즉, 상수는 절대로 변하지 않으므로 변수처럼 오퍼헤드(overhead)가 필요하지 않습니다.

Swift 언어로 프로그램을 개발하면서 값이 변하지 않는 상황에서 더 많은 상수를 사용하게 된다는 것을 알게 될 것입니다. 실제로 애플은 바로 이런 이유 때문에 상수 사용을 장려하고 있습니다.