관리 메뉴

평행우주 : world 1

[Rust] 러스트 변수(variable) 특성 본문

텃밭 1 : BlockChain/Rust

[Rust] 러스트 변수(variable) 특성

parallelworlds 2022. 4. 8. 20:15

 

 

변수 선언

 

let a = 100;   
let b = 3.14;

변수의 데이터 타입이 정의되지 않은 경우 러스트 컴파일러는 타입을 추론한다

(상수는 항상 타입을 지정해야 한다)

 

 

let c: u32 = 12345;  //32비트 정수
let d: f32  = 3.14;  //32비트 부동소수점
let e: bool = true;

데이터 타입을 명시적으로 지정하는 경우, 변수명 뒤에 콜론을 찍고, 데이터 타입을 적는다

 

 

 

 

변수의 불변성 (디폴트)

 

let a = 100;
a = a + 1;    
// 에러: cannot assign twice to immutable variable `a`
println!("{}", a);

변수는 불변성을 갖는다

따라서 변수에 값이 한 번 지정되면 이후에는 그 값을 변경할 수 없다

 

 

 

 

가변적 변수 (예외)

 

let mut a = 100;
a = a + 1;    // 에러 없음
println!("{}", a);

변수의 데이터가 변경되어야 하는 경우

변수 앞에 mut 를 입력하면 된다

 

 

 

 

상수

 

fn main() {
    const PI: f64 = 3.141592;
 
    let area = PI * 5.0 * 5.0;
    println!("{}", area);
}

상수는 항상 불변의 값을 갖는다

const로 선언하며, 항상 데이터 타입을 지정해야 한다

 

 

 

 

 

Shadowing

 

fn main() {
    let a = 1;        // 변수 a는 정수형
    println!("{}", a);

    let a = "hello";  // 변수 a는 문자열
    println!("{}", a);
}

"let"으로 변수를 사용한 경우, 한 코드 Scope에서 동일한 변수명을 let으로 여러 번 정의할 수 있다

새로 정의하는 시점에 이전의 변수 a는 잊게 되고 2를 갖는 a만을 기억하게 된다

 

fn main() {
    let a = 1;
    let a = 2;
    {
        let a = a + 1;
        println!("{}", a); // 출력: 3
    }

    println!("{}", a); // 출력: 2
}
 
fn main() {
    let mut a = 1;
    a = 2;
    {
        a = a + 1;
        println!("{}", a); // 출력: 3
    }

    println!("{}", a); // 출력: 3
}

 

 

 

 

 

Comments