Rust Control Flow (제어문)에 관해

고승우·2023년 6월 2일
0
post-thumbnail

Rust Contorl Flow 공식 doc

Control Flow (제어문)

코드의 조건이 truefalse냐에 따라 코드의 흐름을 조절하기 위해서 if혹은 loop문을 사용한다.


if문

if 키워드를 시작으로 뒤에 조건이 온다. bool 타입만이 조건문에 들어갈 수 있으며, if와 let을 활용하여 조건에 따라 변수에 다른 값을 정의할 수 있다. 하지만 다른 타입을 정의하면 컴파일 에러가 난다. 또한 else if를 활용해여 다양한 조건을 다룰 수 있다.

fn main() {
    let condition = true;
    let number = if condition { 5 } else { 6 };
    println!("The value of number is: {number}");
}

loop 문

loop 키워드로 블록이 무한 반복된다. 언제 멈춰야 하는 명시해줘야 한다. break 키워드 뒤에 반환 값을 넣을 수도 있다.

fn main() {
    let mut counter = 0;
    let result = loop {
        counter += 1;
        if counter == 10 {
            break counter * 2;
        }
    };
    println!("The result is {result}");
}

또한 breakcontinue문을 사용할 때, loop label을 활용하여 어떤 loop에서 break 혹은 continue 할 지 정할 수 있다.

fn main() {
    let mut count = 0;
    'counting_up: loop {
        println!("count = {count}");
        let mut remaining = 10;
        loop {
            println!("remaining = {remaining}");
            if remaining == 9 {
                break;
            }
            if count == 2 {
                break 'counting_up;
            }
            remaining -= 1;
        }
        count += 1;
    }
    println!("End count = {count}");
}

while 문

다른 언어와 마찬가지로 while 조건식이 true일 경우 loop가 진행된다.

fn main() {
    let mut number = 3;
    while number != 0 {
        println!("{number}!");
        number -= 1;
    }
    println!("LIFTOFF!!!");
}

for 문을

while 문을 활용해 배열의 모든 값을 출력하는 상황을 예시로 들자. while 문을 쓸 경우, 정확한 길이의 색인을 사용하지 못하면 프로그램은 패닉을 발생하고, 컴파일러가 실행 간에 반복문을 통해 반복될 때마다 요소에 대한 조건 검사를 수행하는 런타임 코드를 추가하기 때문에 느리다. 이러한 문제를 for문을 활용해 보완할 수 있다.

ex1)

fn main() {
    let a = [10, 20, 30, 40, 50];

    for element in a.iter() {
        println!("the value is: {}", element);
    }
}

ex2)

fn main() {
    for number in (1..4).rev() {	// 1부터 4까지 (4 포함 X) range 생성
        println!("{}!", number);
    }
    println!("LIFTOFF!!!");
}
profile
٩( ᐛ )و 

0개의 댓글