우리는 변수(var)나 상수(let)를 이용해 데이터를 메모리에 임시로 저장한다.
변수(var)는 생성 후 데이터 값을 변경할 수 있지만, 상수(let)는 한번 값을 설정하면 다음에 변경할 수 없다.
주민등록증을 예시로 생각해보자.
주민등록증에는 이름, 주민번호, 주소가 등록되어 있다.
이름과 주민번호는 주로 바뀔 일이 없으니 상수로 표현할 수 있다. 주소는 유동적으로 바뀔 수 있으니 변수로 표현한다.
✓ var: 가변(Mutable) 변수
✓ let: 불변(Immutable) 변수
그래서 왜 Swift는 상수를 더 선호할까?
Swift는 상수를 선호한다. 상수를 선호하면 좋은 점은
- 가독성이 좋다. 상수로 값을 선언하게 된다면 값의 변화가 없다는 사실을 직관적으로 알 수 있다.
- 컴파일러가 별도의 최적화를 진행하여 실행 속도가 빨라진다.
- 개발자의 실수를 컴파일 오류를 통해 막아줄 수 있다.
- 특정한 값에 특별한 의미를 부여할 수 있다.
- 불변성이 적용된다.
- 멀티스레드 관점: 변수 값이 여러 스레드에서 바뀌게 된다면 제어할 수 없게 되는 문제가 생긴다. 이 때문에 변수는 최대한 불변 값으로 선언해야 안전한 멀티스레드 프로그래밍을 할 수 있다.
- 함수형 프로그래밍 관점: 함수는 동일한 Input 이 들어왔을 때 동일한 Output 을 내뱉는 동작을 해야 한다. 하지만 함수 내부에 가변 변수가 들어갔을 때 해당 가변 변수로 인해 값이 변할 수 있다. 동작 변화에 대한 안전성을 확보하기 위해 불변 변수를 사용하는 것이 필요하다.
출처: https://developer.apple.com/documentation/swift
'Swift' 카테고리의 다른 글
[Swift] lazy는 왜 쓰는지 아시나요? (0) | 2022.11.09 |
---|---|
[Swift] guard, let 둘의 차이점은? (0) | 2022.11.09 |
[Swift] final 왜 쓰는지 아시나요? (0) | 2022.09.12 |
[Swift] Struct 와 Class 뭘 써야할까? (0) | 2022.06.26 |