반응형

1. Rust에서는 기본적으로 변수의 불변성을 가진다.

 

자바스크립트 등 다른 언어들에서는 변수를 선언하고 값을 변경하는 것에 제약이 없다.

자바스크립트와 C에서는 잘 작동한다.

 

하지만 Rust에서는 기본적으로 변수에 들어있는 값을 바꿀 수 없다.

위의 두개의 언어와 똑같은 로직으로 구성된 코드지만, 변수에 값을 바꾸지 못한다.

하지만 친절한 Rust의 컴파일러는 문제점과 문제점을 해결하는 방법을 알려주고 있다.

 

변수를 선언할 때 변수 앞에 mut키워드를 붙여 선언하라고 한다.

컴파일러의 말을 듣고 수정하고 다시 컴파일 해보니 잘 작동하는 것을 볼 수 있다.

 

  • Rust에서는 기본적으로 변수의 값을 바꿀 수 없고, 만약 변수에 가변성을 부여하고 싶다면 변수를 선언할 때 mut라는 키워드를 붙여 선언해주자. 그러면 다른 언어처럼 변수에 값을 바꿀 수 있다.

 

 

2. 그렇다면 기본으로 변수를 선언 했을 때와, 상수의 차이점은 무엇인가?

 

다른 프로그래밍 언어에서 상수는 Rust에서 가지고 있는 변수의 특징과 동일한데, Rust에서 상수와 변수는 무슨 차이일까?

 

첫번째로 상수는 mut키워드를 사용할 수 없다. 변수는 mut키워드를 사용하여 가변적으로 바꿀 수 있지만 상수는 이것이 불가능하다.

 

두번째로 상수는 let이 아닌 const를 사용하여 선언 해야하고, 이 값의 유형(숫자인지 문자열인지)를 같이 선언해야한다.

const를 사용함으로써 상수는 프로그램 어디에서든 선언 될 수 있다. let은 함수 바깥에서 선언하면 컴파일 에러.

상수의 선언과 사용

 

세번째로 상수는 프로그램이 처음 시작 될 때, 정해지는 값으로써 프로그램이 실행되는 동안 변경될 수 없다.

 

 

3. 변수의 shadowing(덮어쓰기)

mut 키워드를 사용하면 변수의 값을 바꿀 수 있지만, 변수를 그냥 재선언 해버리면 어떤 일이 일어날까?

아래 예제를 보자.

결과 값이 15가 나왔다. 이렇게 변수를 재선언 한다면 덮어쓰기를 한다는 것을 알 수 있다.

이것의 장점은 let으로 다시 새 변수를 선언하고, 값의 유형을 변경할 수 있으면서도 같은 이름을 사용할 수 있다는 점 이다.

(1),  (2)

(1)에서는 공백문자열을 넣은 변수에 공백문자의 길이를 다시 재선언 하였다. 문자열이 들어있는 변수를 재선언 함으로써 3이라는 숫자가 들어갈 수 있게 한것이다.

 

(2)에서는 컴파일 오류가 나타나는데, 문자열로 선언된 변수에 숫자를 넣으려고 해서 오류가 뜬 것이다.

 

반응형