1. Rust에서는 기본적으로 변수의 불변성을 가진다.
자바스크립트 등 다른 언어들에서는 변수를 선언하고 값을 변경하는 것에 제약이 없다.
하지만 Rust에서는 기본적으로 변수에 들어있는 값을 바꿀 수 없다.
위의 두개의 언어와 똑같은 로직으로 구성된 코드지만, 변수에 값을 바꾸지 못한다.
하지만 친절한 Rust의 컴파일러는 문제점과 문제점을 해결하는 방법을 알려주고 있다.
변수를 선언할 때 변수 앞에 mut키워드를 붙여 선언하라고 한다.
컴파일러의 말을 듣고 수정하고 다시 컴파일 해보니 잘 작동하는 것을 볼 수 있다.
- Rust에서는 기본적으로 변수의 값을 바꿀 수 없고, 만약 변수에 가변성을 부여하고 싶다면 변수를 선언할 때 mut라는 키워드를 붙여 선언해주자. 그러면 다른 언어처럼 변수에 값을 바꿀 수 있다.
2. 그렇다면 기본으로 변수를 선언 했을 때와, 상수의 차이점은 무엇인가?
다른 프로그래밍 언어에서 상수는 Rust에서 가지고 있는 변수의 특징과 동일한데, Rust에서 상수와 변수는 무슨 차이일까?
첫번째로 상수는 mut키워드를 사용할 수 없다. 변수는 mut키워드를 사용하여 가변적으로 바꿀 수 있지만 상수는 이것이 불가능하다.
두번째로 상수는 let이 아닌 const를 사용하여 선언 해야하고, 이 값의 유형(숫자인지 문자열인지)를 같이 선언해야한다.
const를 사용함으로써 상수는 프로그램 어디에서든 선언 될 수 있다. let은 함수 바깥에서 선언하면 컴파일 에러.
세번째로 상수는 프로그램이 처음 시작 될 때, 정해지는 값으로써 프로그램이 실행되는 동안 변경될 수 없다.
3. 변수의 shadowing(덮어쓰기)
mut 키워드를 사용하면 변수의 값을 바꿀 수 있지만, 변수를 그냥 재선언 해버리면 어떤 일이 일어날까?
아래 예제를 보자.
결과 값이 15가 나왔다. 이렇게 변수를 재선언 한다면 덮어쓰기를 한다는 것을 알 수 있다.
이것의 장점은 let으로 다시 새 변수를 선언하고, 값의 유형을 변경할 수 있으면서도 같은 이름을 사용할 수 있다는 점 이다.
(1)에서는 공백문자열을 넣은 변수에 공백문자의 길이를 다시 재선언 하였다. 문자열이 들어있는 변수를 재선언 함으로써 3이라는 숫자가 들어갈 수 있게 한것이다.
(2)에서는 컴파일 오류가 나타나는데, 문자열로 선언된 변수에 숫자를 넣으려고 해서 오류가 뜬 것이다.
'Rust > Rust 문법' 카테고리의 다른 글
Rust (6) - 주석 (0) | 2022.04.22 |
---|---|
Rust (5) - Rust에서 함수 사용법 (0) | 2022.04.21 |
Rust (4) - Rust에서 변수의 데이터 타입 (0) | 2022.04.20 |
Rust (2) - Rust설치, 프로젝트 생성과 기본 출력 예제 (0) | 2022.04.14 |
Rust (1) - 개념과 구조 (0) | 2022.04.14 |
최근댓글