시뻘건 개발 도전기

러스트 4 - 변수와 타입 #1 본문

프로그래밍/RUST

러스트 4 - 변수와 타입 #1

시뻘건볼때기 2019. 2. 16. 15:54
반응형

Rust를 본격적으로 알아보자. 이번 포스팅에서는 변수와 타입을 공부해볼까 한다.



변수는 가변과 불변의 성질을 가지고 있지요.

#RUST TEAM에서 변수 사용할때에는 불변성(기본 변수)을 권장한다.


왜 그렇게 권장 했을지, 어떻게 코딩을 시작 해야할지를 알아보자.


다음과 같이 코드를 작성하고 돌려보자.

fn main() {

    let var = 1;

    println!("var : {}", var);


    var = 2;

    println!("var : {}", var);

rust를 실행하면

"var"라는 기본 변수를 선언할 것이고 1을 저장할꺼야.

"var"에 저장되어 있는 값을 출력할꺼야.


"var"의 값을 2로 바꿀꺼야.

"var"에 저장되어 있는 값을 출력할꺼야.




error 메시지만 봐도 뭐라고 하는건지, 왜 실패인지, 어떻게 해결해야할지 눈에 보인다. 친절하게 다 알려주네..ㅎㅎㅎㅎㅎ


처음 언급한 "기본 변수"라는 것이 바로 이 코드의 변수 "var"를 이야기 한 것이다.

기본 변수 var에 1이라는 값을 저장하여 사용하고 추 후에 2하는 값을 다시 저장하고 사용한다.

즉, 변수 var는 가변성을 가져야 한다는 뜻!


가변성을 주기 위해 우리는 "mut"라는 예약어를 사용하자.

fn main() {

    let mut var = 1;

    println!("var : {}", var);


    var = 2;

    println!("var : {}", var);

}

 rust를 실행하면

"var"라는 가변 변수를 선언할 것이고 1을 저장할꺼야.

"var"에 저장되어 있는 값을 출력할꺼야.


"var"의 값을 2로 바꿀꺼야.

"var"에 저장되어 있는 값을 출력할꺼야.


실행시키면 error없이 잘 출력이 되는 console 화면을 볼 수 있을 것이다.


나는 개인적으로 남이 짠 코드를 보고 분석하고 파악하는 것이 가장 어렵다.

왜 이렇게 짰는가. 더 좋은 녀석이 있는데 왜 사용을 하지 않았는가 등등 온갖 생각이 다 들기 마련이기에...

만약 변수 하나가 여러가지 일을 하거나 값이 수시로 계속 바뀌게되면 코드 파악이 어려워지거나 덩치 큰 프로젝트라면 버그 잡기도 힘들어 질 것이다.

그 외에도, 인스턴스 생성, 속도, 가독성 등과 관련하여 나름 고민하여 개발을 진행해야 한다.


가끔 우리는 변수가 아닌 상수를 사용해야 할 경우가 생긴다.

rust에서는 상수를 "const" 예약어를 사용하여 사용한다.

 fn main() {

    const CONST_VAR : i8 = 3;

    println!("var : {}", CONST_VAR);

}

실행되면

CONST_VAR라는 8비트 integer타입의 상수를 생성하고 8을 저장할꺼야.

CONST_VAR의 값을 출력 할꺼야


실행하면 3이 출력되는 것을 볼 수 있다.

(타입 참고 : https://doc.rust-lang.org/std/primitive.i8.html)


여기서 특수한 변수 선언 방식이 등장한다.

바로 "Shadowing".

shadowing이란, 같은 변수를 선언하여 다루는 방식을 이야기한다.

코드로 쉽게 알아보자.

fn main() {

    let var = 1;

    let var = var + 1;

    let var = var * 2;


    println!("var : {}", var);

}

 실행되면

"var"라는 변수를 만들고 1을 저장할꺼야

var 값에 1을 더해서 shadow한 var에 저장할꺼야

var 값에 2을 곱해서 shadow한 var에 저장할꺼야

var 값을 출력 할꺼야.


여기서 Shadowing 방식을 알겠지요?

이전에 알아보았던 가변성을 부여하는 "mut"와는 다른 성격을 띄고 있습니다.

이 둘의 차이점은 "let" 예약어를 사용하여 새로운 변수(shadow)를 정의하고 변수 타입을 마음대로 변경 가능하면서 변수명이 같다!!!!!!라는 것이다.

Shadowing 방식은 보통 타입을 변경할 때 자주 사용한다.




그렇다면 가변성 변수를 선언하고 타입을 바꾸면 어떻게 될까~~요?

반응형

'프로그래밍 > RUST' 카테고리의 다른 글

러스트 6 - 함수  (0) 2019.02.17
러스트 5 - 변수와 타입 #2  (0) 2019.02.16
러스트 3 - Cargo  (0) 2019.02.10
러스트 2 - How to run  (0) 2019.02.09
러스트 1 - Hello Rust!  (0) 2019.02.09
Comments