변수, 변경 가능성, 섀도잉
변수를 선언하고 변경 가능성을 관리하며, 유연하게 변수를 다시 정의하기 위해 섀도잉을 사용하는 방법을 이해합니다.
변수, 변경 가능성, 섀도잉은(는) CoddyKit의 무료 Learn Rust Coding 강의입니다. 이것은 3개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn Rust Coding 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn Rust Coding 강의에는 총 3개의 강의가 포함되어 있습니다.
Rust 변수 입문
환영합니다! Rust에서 변수는 데이터를 저장하는 기본 요소입니다. 프로그램에 필요한 정보를 보관하는 이름표가 붙은 상자와 같다고 생각하면 됩니다.
Rust는 안전성을 중시하며, 이는 변수를 다루는 방식에서부터 시작됩니다. 변수를 선언하고, 변경 가능 여부를 제어하고, 영리한 방법으로 변수를 다시 정의하는 방법까지 배우게 됩니다.
<code>let</code>으로 변수 선언하기
Rust에서 변수를 만들 때는 let 키워드를 사용합니다. let은 값에 이름을 지정합니다. Rust는 타입을 추론하는 경우가 많으므로 항상 타입을 직접 지정할 필요는 없습니다.
다음 간단한 예제를 실행해 보세요.
fn main() {
let apples = 5;
println!("I have {} apples.", apples);
}Rust의 기본 불변성
Rust의 핵심 개념 중 하나는 변수가 기본적으로 불변이라는 것입니다. 변수에 값을 할당한 뒤에는 나중에 그 값을 변경할 수 없습니다.
제한적으로 느껴질 수도 있지만, 이는 버그를 예방하고 코드를 더 안전하고 이해하기 쉽게 만들어 줍니다. 특히 동시 프로그래밍에서 유용합니다.
<code>mut</code>으로 변수를 가변으로 만들기
변수의 값을 변경해야 한다면 변수 이름 앞에 mut 키워드를 사용해 명시적으로 가변 변수로 만들 수 있습니다.
이렇게 하면 Rust와 다른 개발자에게 이 변수의 값을 변경할 의도가 있음을 알릴 수 있습니다.
fn main() {
let mut score = 100;
println!("Initial score: {}", score);
score = 150; // We can change it now!
println!("New score: {}", score);
}<code>mut</code>을 사용할 때
mut은 강력하지만 필요한 경우에만 사용하는 것이 좋습니다. 기본적으로는 불변성을 우선하세요.
- 카운터, 상태 변수 또는 실제로 갱신해야 하는 값에는
mut을 사용합니다. - 처음 할당한 뒤 값이 절대 바뀌지 않는다면 불변으로 유지합니다(
mut을 사용하지 않습니다). - 명확성: 변수를
mut으로 명시하면 코드의 의도가 더 분명해집니다.
<code>const</code>로 상수 정의하기
상수는 특별한 종류의 불변 변수입니다. let 대신 const 키워드로 선언하며, 타입 주석을 반드시 명시해야 합니다.
상수에는 상수 표현식만 할당할 수 있습니다. 함수 호출의 결과나 실행 시간에만 계산할 수 있는 값은 할당할 수 없습니다.
fn main() {
const MAX_USERS: u32 = 10_000; // Type annotation is required!
println!("Max users allowed: {}", MAX_USERS);
}<code>let</code> 변수와 <code>const</code> 상수
let 변수와 const 상수의 주요 차이점은 다음과 같습니다.
- 가변성:
let변수는 기본적으로 불변이지만mut으로 가변으로 만들 수 있습니다.const상수는 항상 불변입니다. - 선언:
let은let을 사용합니다.const는const를 사용합니다. - 타입 주석:
let변수는 타입을 추론할 수 있는 경우가 많습니다.const상수는 타입을 반드시 지정해야 합니다. - 범위:
const상수는 전역 범위를 포함한 모든 범위에서 선언할 수 있습니다.
섀도잉 소개
Rust에서는 이전 변수와 같은 이름으로 새 변수를 선언할 수 있습니다. 이를 섀도잉이라고 합니다.
새 변수는 이전 변수를 '가립니다'. 따라서 이후 코드는 새 변수의 값을 보게 됩니다. 이전 변수는 메모리에 여전히 존재하지만 더 이상 직접 접근할 수 없습니다.
fn main() {
let x = 5;
println!("First x: {}", x); // Outputs 5
let x = x + 1; // 'x' is shadowed by a new 'x'
println!("Second x: {}", x); // Outputs 6
{ // Inner scope
let x = x * 2; // 'x' is shadowed again
println!("Inner x: {}", x); // Outputs 12
}
println!("Outer x: {}", x); // Outputs 6 (inner x is out of scope)
}타입 변환에 섀도잉 사용하기
섀도잉의 강력한 활용법 중 하나는 같은 이름을 유지하면서 변수의 값과 타입까지 변환하는 것입니다. 문자열을 숫자로 구문 분석해야 할 때 흔히 사용합니다.
새 변수 이름을 만드는 대신(예: string_val 다음에 num_val을 만드는 대신) 같은 이름을 재사용할 수 있습니다.
fn main() {
let spaces = " ";
println!("Spaces string: '{}'", spaces);
// Shadow 'spaces' with a new variable that holds its length
let spaces = spaces.len();
println!("Spaces count: {}", spaces);
}빠른 확인: 변수와 가변성
다음 Rust 코드를 살펴보세요. 콘솔에 출력되는 y의 최종 값은 무엇일까요?
변수, 가변성 및 섀도잉 복습
잘하셨습니다! Rust 변수의 핵심을 배웠습니다.
let으로 변수를 선언하며, 변수는 기본적으로 불변입니다.mut을 추가하면 변수를 가변으로 만들어 값을 변경할 수 있습니다.const는 항상 불변이며 타입 주석이 필요한 상수를 선언할 때 사용합니다.- 섀도잉을 사용하면 같은 이름으로 새 변수를 선언해 이전 변수를 대체할 수 있습니다. 타입 변환에 유용합니다.
다음에는 Rust의 다양한 기본 데이터 타입을 자세히 살펴보겠습니다!
자주 묻는 질문
“변수, 변경 가능성, 섀도잉” 강의는 무료인가요?
네 — “변수, 변경 가능성, 섀도잉” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn Rust Coding 강의 전체를 잠금 해제할 수 있습니다. Learn Rust Coding 강의에는 총 3개의 강의가 포함되어 있습니다.
“변수, 변경 가능성, 섀도잉”에서 뭘 배우나요?
변수를 선언하고 변경 가능성을 관리하며, 유연하게 변수를 다시 정의하기 위해 섀도잉을 사용하는 방법을 이해합니다. 브라우저에서 직접 실행하는 실습 코드로 Learn Rust Coding을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Learn Rust Coding을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Learn Rust Coding은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 3개 중 1번째 강의입니다.
“변수, 변경 가능성, 섀도잉” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Learn Rust Coding 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Learn Rust Coding 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 변수, 변경 가능성, 섀도잉
- 기본 자료형과 연산자
- 함수와 제어 흐름