러스트의 변수에 대해서 이해하기 위해서는
변동성(Mutability)이 뭔지 알아볼 필요가 있습니다.
변수라는게 뭔지 설명할 수 있다면
딱히 어려운 개념은 아닐겁니다.
우선 러스트의 변수는 let 키워드로 선언합니다.
다음은 화면에 변수를 출력하는 코드입니다.
fn main() {
let a = 1;
println!("a : {}", a);
}
심플합니다. let a = 1 로 초기화 하여 사용했습니다.
그럼 다음의 코드는 어떨까요?
fn main() {
let a = 1;
println!("a: {}", a);
a = 10;
println!("a: {}", a);
}
Compiling rustvariable v0.1.0 (/home/neokay/projects/rust/rustvariable)
error[E0384]: cannot assign twice to immutable variable `a`
--> src/main.rs:15:5
|
12 | let a = 1;
| -
| |
| first assignment to `a`
| help: consider making this binding mutable: `mut a`
...
15 | a = 10;
| ^^^^^^ cannot assign twice to immutable variable
컴파일러의 에러 메시지가 나옵니다.
immutable variable 불변의 변수에 대해
두번 할당할 수 없다고 합니다.
불변(immutable)은 변동(mutable)의 반대이며
let 키워드로 선언한 변수는 불변입니다.
-> 러스트에서 기본적으로 변수란 불변입니다. (?)
기존의 프로그래밍 언어들은 변수는
마음대로 값을 바꿀 수 있는 것 입니다.
하지만 러스트에서는 기본 변수는 값을
변경할 수 없습니다. 그렇다면 상수인가?
그건 아닙니다. 상수는 따로 있습니다.
참 묘한 부분인데요. 변수에 변동성을 줘서
값을 변경하려면 mut 키워드를 사용해야 합니다.
mut은 immutable의 반대로 mutable 은
변할 수 있다는 뜻 입니다.
let mut a = 1; a는 변동성 변수라는 뜻으로
후에 값을 변경할 수 있다는 뜻입니다.
다음의 코드는 컴파일 에러가 나지 않습니다.
a: 1
a: 10
을 결과로 출력합니다.
fn main() {
let mut a = 1;
println!("a: {}", a);
a = 10;
println!("a: {}", a);
}
프로그래밍에서 상수는 값을 변경할 수 없는
변수입니다. 값을 변경할 수 없는 변수란게
말이 좀 그렇지만 정확히는 초기에 한번
값을 할당한 후에 변경하지 못하도록
잠그는 개념입니다.
const 상수명 : 데이타 타입 = 값
의 형식으로 사용합니다.
fn main() {
println!("Hello, world!");
const MY_CONSTANT: i64 = 777;
println!("my constant : {}", MY_CONSTANT);
// 할당할 수 없다.
// MY_CONSTANT = 5;
}
데이터 타입에 대한 튜토리얼이
다음 포스팅 내용으로 const 는
그 다음에 다룰 내용입니다 - 긴 하지만
딱히 const 키워드도 C언어와 비슷하고
사용법도 비슷합니다. const 에는
mut 키워드를 사용할 수 없습니다.
let
-> immutable 변수
let mut
-> mutable 변수
const
-> const 상수
러스트는 기존 C계열 언어와는 좀 다릅니다.
변경할 수 없는 immutable variable 개념이
기본 변수에 들어있으니까 상수인
const 와 혼동하지 않도록 주의합니다.