Chap.3 common-programming-concepts
· 32 min read
변수
, 타입
, 함수
, 주석
, 제어문
에 대해서 배울 것입니다.
3.1 변수와 가변성
- 변수는 기본적으로 불변입니다.
- 이것은 러스트가 제공하는 안정성과 쉬운 동시성이라는 이점을 얻을 수 있는 방향으로 코드를 쓰게 하는 강제사항(nudge)중 하나입니다.
mut
를 사용해 가변으로 만들 수 있음let mut x = 5;
- 버그를 방지하는 것 외에도 고려해야 할 비용이 있습니다.(함수형 프로그래밍의 불변성 컨셉에 대한 내용)
- 예를 들어, 큰 데이터 구조를 사용할 때, 인스턴스를 알맞게 가변으로 설정하는 것은 새로 인스턴스를 할당하고 복사해서 돌려주는 것보다 빠를 수 있습니다.
- 작은 데이터 구조라면, 새 인스턴스를 만들고 더 함수형 프로그래밍 스타일 로 작성하는 것이 더 흐름을 따라가기 쉽기 때문에, 퍼포먼스가 느려지더라도 명확성을 얻는 것에 대한 패널티로 받아들이는 것이 좋을 수 있습니다.
변수와 상수의 차이
- 먼저,
mut
와 상수를 함께 사용할 수 없음 - 상수는 항상 불변 - 상수는
const
키워드로 선언하며, 값의 타 입은 반드시 어노테이션이 달려야 합니다. - 마지막 차이점은, 상수는 반드시 상수 표현식이어야 하고 함수의 결과값이나 런타임에 결정되는 그 어떤 값이어도 안된다는 것입니다.
- 상수를 위한 러스트의 작명 관례는
대문자 스네이크 표기법
const MAX_POINTS: u32 = 100_000;
덮어쓰기
- 새 변수를 이전 변 수명과 같은 이름으로 선언할 수 있고,
- 새 변수는 이전의 변수를 덮어씁니다.
- 러스트인들은 첫 번째 변수가 두 번째 변수에 의해 덮어쓰였다라고 표현
let x = 5;
let x = x + 1;
let x = x * 2;
->x is: 12
- 덮어쓰기는 변수를
mut
로 표시하는 것과는 다릅니다.let
키워드 없이 값을 재할당 하려고 한다면 컴파일-타임 에러가 발생하기 때문입니다.
mut
과 덮어쓰기의 또다른 차이점은, 같은 변수명으로 다른 타입의 값을 저장할 수 있다는 것입니다.