일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 애자일기법
- 애자일프로그래밍
- Baekjoon
- 프레임워크
- 코드
- Java
- database
- 개발
- 코딩테스트
- spring boot
- 백준
- 개발자
- ES
- API
- 알고리즘
- framework
- JPA
- 그리디알고리즘
- 코딩
- 데이터베이스
- 스프링
- Elasticsearch
- cleancode
- 엘라스틱서치
- 자바
- Spring
- 애자일
- 읽기쉬운코드
- 그리디
- 클린코드
- Today
- Total
튼튼발자 개발 성장기🏋️
러스트 4 - 변수와 타입 #1 본문
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 |