상세 컨텐츠

본문 제목

6. Rust 상수

Rust를 처음부터 배우세요

by 러스트코리아 2024. 11. 13. 22:31

본문

반응형

상수는 값을 변경할 수 없는 변수입니다. 상수를 정의한 후에는 상수 값을 변경할 수 없습니다.

const 키워드는 Rust 언어에서 상수를 정의하는 데 사용됩니다. 상수를 정의할 때 상수의 데이터 유형을 명시적으로 지정해야 합니다.

6.1 상수 정의 구문

Rust에서 상수를 정의하는 구문 형식은 다음과 같습니다.

  1. const VARIABLE_NAME:dataType = value;

구문적으로 상수를 정의하고 변수를 정의하는 구문은 유사합니다.

  • 상수를 정의하는 데 사용되는 키워드는 const이고 변수를 정의하는 데 사용되는 키워드는 let입니다.
  • 상수를 정의할 때는 데이터형을 지정해야 하지만, 변수를 정의할 때는 데이터형이 자동으로 추론되므로 생략할 수 있다.
  • 상수 이름의 명명 규칙은 변수 변수의 명명 규칙과 동일하지만 상수 이름은 일반적으로 대문자로 표시됩니다.

6.2 Rust 상수 명명 규칙

약간 반복적이지만 여전히 상수의 명명 규칙을 반복해야 합니다. 상수의 명명 규칙은 다음 사항을 제외하면 변수의 명명 규칙과 유사합니다.

  • 상수 이름은 일반적으로 대문자로 표시됩니다.
  • 상수를 정의하려면 let 키워드 대신 const 키워드를 사용하세요.
  • 이러한 명명 규칙에 따라 상수를 정의하는 몇 가지 예를 살펴보겠습니다.
  1. fn main() {
  2. const USER_LIMIT:i32 = 100; // i32 유형의 상수를 정의
  3. const PI:f32 = 3.14; // float 유형의 상수를 정의
  4.  
  5. println!("user limit is {}",USER_LIMIT); // 상수 값 표시
  6. println!("pi value is {}",PI); // 상수 값 표시
  7. }

6.3 Rust의 상수와 변수의 차이점

Rust에서 상수와 변수의 차이점은 인터뷰에서 반드시 물어봐야 하는 고전적인 질문 중 하나입니다.

이번 면접질문에 대한 답변을 자세히 이야기해보겠습니다.

  1. const 키워드는 상수를 선언하는 데 사용되며, let 키워드는 변수를 선언하는 데 사용됩니다.
  2. 변수를 선언할 때는 데이터형을 무시할 수 있지만, 상수를 선언할 때는 무시할 수 없습니다. 이는 const USER_LIMIT=100과 같은 상수 선언으로 인해 컴파일 오류가 발생한다는 것을 의미합니다.
  3. 변수를 선언할 때 let 키워드를 사용하면 변수를 재할당할 수 없게 되지만 mut 키워드를 추가하면 변수를 재할당할 수 있습니다. 그러나 상수에 대해서는 이러한 메커니즘이 없습니다. 상수를 정의한 후에는 변경하거나 재할당할 수 없습니다.
  4. 상수는 상수 표현식/수학적 표현식에만 할당될 수 있으며, 함수 반환 값이나 런타임에만 결정될 수 있는 기타 값에는 할당할 수 없습니다. 이는 상수가 컴파일 타임에 특정 값으로 대체되는 기호일 뿐이기 때문입니다. 이는 C 언어의 #define으로 정의되는 기호와 다소 유사합니다.
  5. 전역 범위를 포함하여 모든 범위에서 상수를 정의할 수 있습니다. 즉, 어디에서나 정의할 수 있습니다. 따라서 상수를 정의해야 하는 이유를 명확하게 하기 위해 필요한 곳에 정의할 수 있습니다.
  6. 동일한 이름을 가진 상수는 나타날 수 없으며 변수는 (숨김/마스킹) 가능합니다.

6.4 상수 및 변수 숨기기/마스킹

Rust 언어에서는 동일한 변수 이름을 가진 변수의 반복 정의를 허용합니다. 동일한 이름을 가진 변수에 대한 규칙은 나중에 정의된 변수가 이전에 정의된 변수를 동일한 이름으로 덮어쓰거나 마스킹한다는 것입니다.

예를 들어 설명하겠습니다.

  1. fn main() {
  2. let salary = 100.00;
  3. let salary = 1.50 ;
  4. // 급여 출력
  5. println!("salary 변수의 값:{}",salary);
  6. }

위의 Rust 코드를 컴파일하고 실행하면 출력 결과는 다음과 같습니다.

  1. salary 변수의 값:1.5

위 코드에서는 급여라는 동일한 이름을 가진 두 개의 변수를 정의합니다. 첫 번째 급여에 값 100.00을 할당하고 두 번째 급여에 값 1.5를 할당합니다.

출력에서 볼 수 있듯이 두 번째 급여는 처음으로 정의된 변수를 숨기거나 보호합니다.

6.5 동일한 이름을 가진 변수는 다른 데이터 유형을 가질 수 있습니다.

Rust는 동일한 범위/내부 범위에서 동일한 이름을 가진 여러 변수 정의를 지원하며, 동일한 이름을 가진 각 변수의 유형도 다를 수 있습니다.

동일한 이름을 가진 변수가 다른 데이터 유형을 가질 수 있음을 보여주기 위해 간단한 예를 사용합니다.

  1. fn main() {
  2. let uname = "Mohtashim";
  3. let uname = uname.len();
  4. println!("uname 문자열의 문자 수: {}",uname);
  5. }

위의 Rust 코드를 컴파일하고 실행하면 출력 결과는 다음과 같습니다.

  1. uname 문자열의 문자 수 :: 9

위의 예에서는 이름이 동일한 두 개의 변수를 정의했지만 uname은 서로 다른 데이터 유형을 가지고 있습니다. uname의 데이터 유형은 처음에는 문자열인 string이고, 두 번째에는 정수인 i32가 됩니다.

len() 함수는 문자열의 문자 수를 반환합니다.

6.6 같은 이름의 상수는 나타날 수 없습니다.

상수와 변수의 또 다른 차이점은 상수를 가리거나 가릴 수 없으며 반복적으로 정의할 수 없다는 것입니다.

즉, 외부 레이어/이전에 정의된 동일한 이름의 상수를 차단하는 내부 레이어/이후 범위에 정의된 상수가 없습니다.

이는 Rust 언어가 동일한 이름을 가진 상수를 허용하지 않기 때문입니다.

6.6.1 예

위의 예를 수정하고 const 키워드를 사용하여 동일한 이름의 상수를 정의합니다.

  1. fn main() {
  2. const NAME:&str = "Mohtashim";
  3. const NAME:usize = NAME.len();
  4. //Error : `NAME` already defined
  5. println!("상수 이름 유형 변경: {}",NAME);
  6. }
현재 콘텐츠 저작권은 chapin666 또는 그 계열사에 있습니다.
반응형

'Rust를 처음부터 배우세요' 카테고리의 다른 글

8. Rust 연산자  (0) 2024.11.15
7. Rust 문자열  (0) 2024.11.15
5. Rust 변수 정의  (0) 2024.11.13
4. Rust 데이터 유형  (0) 2024.11.13
3. Rust Hello-World  (0) 2024.11.13

관련글 더보기