본문 바로가기

Swift

[Swift] Swift는 왜 상수(let)를 선호할까?

우리는 변수(var)나 상수(let)를 이용해 데이터를 메모리에 임시로 저장한다.

변수(var)는 생성 후 데이터 값을 변경할 수 있지만, 상수(let)는 한번 값을 설정하면 다음에 변경할 수 없다.

 

 

 

주민등록증을 예시로 생각해보자. 

주민등록증에는 이름, 주민번호, 주소가 등록되어 있다.

이름과 주민번호는 주로 바뀔 일이 없으니 상수로 표현할 수 있다. 주소는 유동적으로 바뀔 수 있으니 변수로 표현한다.

 

Ian이라는 사람의 Idcard 구조체를 만들었다. 이름과 주민번호는 상수로, 주소는 변수로 처리했다.

 

✓ var: 가변(Mutable) 변수

변수로 구현한 address 를 포항으로 성공적으로 변경했다.

 

let: 불변(Immutable) 변수

상수로 구현한 name을 변경해봤다. 당연하게도 let으로 구현한 프로퍼티여서 변경이 불가하다.

 

 

 

그래서 왜 Swift는 상수를 더 선호할까?

 

Swift는 상수를 선호한다. 상수를 선호하면 좋은 점은 

 

  • 가독성이 좋다. 상수로 값을 선언하게 된다면 값의 변화가 없다는 사실을 직관적으로 알 수 있다.
  • 컴파일러가 별도의 최적화를 진행하여 실행 속도가 빨라진다.
  • 개발자의 실수를 컴파일 오류를 통해 막아줄 수 있다.
  • 특정한 값에 특별한 의미를 부여할 수 있다.
  • 불변성이 적용된다.
    • 멀티스레드 관점: 변수 값이 여러 스레드에서 바뀌게 된다면 제어할 수 없게 되는 문제가 생긴다. 이 때문에 변수는 최대한 불변 값으로 선언해야 안전한 멀티스레드 프로그래밍을 할 수 있다.
    • 함수형 프로그래밍 관점: 함수는 동일한 Input 이 들어왔을 때 동일한 Output 을 내뱉는 동작을 해야 한다. 하지만 함수 내부에 가변 변수가 들어갔을 때 해당 가변 변수로 인해 값이 변할 수 있다. 동작 변화에 대한 안전성을 확보하기 위해 불변 변수를 사용하는 것이 필요하다.

 

 


 

 

 

출처: https://developer.apple.com/documentation/swift

출처: https://dblog.tech/13

 

Apple Developer Documentation

 

developer.apple.com