AI/Rust
[Rust] 조건문과 반복문 - let if, loop, match
mingchin
2024. 11. 19. 21:45
728x90
반응형
Rust의 기본적인 조건문과 반복문은 C 계열 언어와 거의 동일하다. 일부 C와 python이 조합된 것 같은.. Rust 만의 특성을 가지는 몇 가지를 살펴본다.
let if
변수를 지정하는 let과 조건 분기를 조합해서 아래와 같이 사용할 수 있다.
use std::io;
fn main() {
println!("Please enter the temperature:");
let mut input = String::new();
io::stdin().read_line(&mut input)
.expect("Failed to read line");
let temperature: i32 = input.trim().parse()
.expect("Please type a number!");
let weather = if temperature > 25 {
"hot"
} else if temperature > 15 {
"warm"
} else {
"cold"
};
println!("The weather is: {}", weather);
}
위와 같이 작성하고 실행해보면, 동적으로 입력된 stdin에 따라 "weather" 변수가 셋 중 하나로 할당된다.
loop
Rust는 while문이 존재함에도, 무한 루프를 정의하기 위한 "loop"가 따로 있다.
fn main() {
let mut count = 0;
let result = loop {
count += 1;
if count == 10 {
break count * 2; // 루프를 종료하면서 값을 반환합니다.
}
};
println!("The result is: {}", result);
}
특이한 점은 while/loop문 역시 동적 변수 할당이 가능하다는 점이다. loop를 돌다가 break하는 시점에 "result" 변수를 할당해 줄 수 있다. 리턴하고 싶은 값은 break 바로 뒤어 적어주면 된다.
match
C의 switch/case와 유사한 문법이 Rust에도 있다.
use std::io;
fn main() {
loop {
println!("Guess my favorite natural number:");
let mut input = String::new();
io::stdin().read_line(&mut input)
.expect("Failed to read line");
let number: i32 = match input.trim().parse() {
// 예외 처리부
Ok(num) => num,
Err(_) => {
println!("Please type a valid number!");
continue;
}
};
match number {
1 => println!("It's my second favorite!"),
2 | 3 | 5 | 7 | 11 => println!("This is a prime number, I love prime numbers"),
13 => {
println!("This is my favorite number!");
break;
},
_ => println!("This is just a number."),
}
}
}
위와 같이 작성하면, 13을 맞힐 때까지 반복해서 숫자를 입력해야하는 무한 루프를 실행할 수 있다.
use std::io;
fn main() {
println!("How old are you?:");
let mut input = String::new();
io::stdin().read_line(&mut input)
.expect("Failed to read line");
let age: i32 = match input.trim().parse() {
// 예외 처리부
Ok(num) => num,
Err(_) => {
println!("Please type a valid age!");
return;
}
};
let group = match age {
0..=10 => "child",
11..=20 => "teenager",
21..=64 => "adult",
_ => "senior",
};
println!("You are in the {} group.", group);
}
위와 같이 구성하면, "age"가 어떤 구간에 속하냐에 따라 조건 분기가 가능하다.
처음이라 좀 난해한 구석이 있지만.. 적응하고 나면 정말 가독성이 좋은 언어일 것 같다.
728x90
반응형