러스트 섀도잉(Shadowing)
OR 섀도우(Shadow)
러스트에는 섀도잉(Shadowing)
혹은 섀도우(Shadow)
라 불리는 개념이 있다.
fn main() {
let x = 5;
let x = x + 1;
let x = x * 2;
println!("The value of x is: {}", x);
}
위는 러스트 책에서 제공하는 섀도우 (shadow) 의 예제이다. 섀도우를 간단히 설명하자면, 이전에 존재하던 변수 값을 가려버리는 것이다.
섀도우의 특징
let spaces = " ";
let spaces = spaces.len();
위와 같이 타입이 변화해도 상관없다.
let mut spaces = " ";
spaces = spaces.len();
위는 섀도우를 사용하지 않고 단순히 mutable
변수를 사용한 예이다.
$ cargo run
Compiling variables v0.1.0 (file:///projects/variables)
error[E0308]: mismatched types
--> src/main.rs:3:14
|
2 | let mut spaces = " ";
| ----- expected due to this value
3 | spaces = spaces.len();
| ^^^^^^^^^^^^ expected `&str`, found `usize`
For more information about this error, try `rustc --explain E0308`.
error: could not compile `variables` due to previous error
타입이 맞지 않아 에러가 나게 된다.
자바스크립트에서는 어떻게 될까?
function a() {
let abc = 20;
let abc = 30;
}
// Uncaught SyntaxError: Identifier 'abc' has already been declared
이미 선언된 변수라는 문법 오류가 발생한다.
반응형
'러스트 (Rust)' 카테고리의 다른 글
러스트 (Rust) 의 반복문 정리 (0) | 2022.11.01 |
---|---|
러스트 (Rust) 의 제어문 문법 정리 (0) | 2022.11.01 |
러스트 (Rust) 함수 사용법 핵심 정리 (0) | 2022.11.01 |
러스트 (Rust) 의 데이터 타입 종류 (Data types) (0) | 2022.11.01 |
러스트 (Rust) 컴파일러 설치 방법 (0) | 2022.10.31 |