본문 바로가기

Rust

[Rust] 제어문(조건문, 반복문)

Rust에서 사용할 수 있는 조건문은 if가 있고 반복문은 loop, while, for가 있습니다.

조건문

조건문 if의 사용은 다른 언어와 별반 다르지 않습니다.

fn main() {
    let number = 6;

    if number % 4 == 0 {
        println!("number is divisible by 4");
    } else if number % 3 == 0 {
        println!("number is divisible by 3");
    } else if number % 2 == 0 {
        println!("number is divisible by 2");
    } else {
        println!("number is not divisible by 4, 3, or 2");
    }
}

c, c++ 등에서 쓰이는 if 와 다른 점은 조건식의 괄호가 쓰이지 않는다는 점입니다.
조건은 무조건 bool로 표현될 수 있어야 합니다.

다음과 같은 식은 에러를 발생시킵니다.

fn main() {
    let number = 3;

    if number {
        println!("number was three");
    }
}


다른 언어에서 자주 쓰이던 삼항연산자를 let을 활용해 표현할 수 있습니다.

fn main() {
    let condition = true;
    let number = if condition {
        5
    } else {
        6
    };

    println!("The value of number is: {}", number);
}

number 변수에는 condition이 참이라면 5 거짓이라면 6이 저장됩니다.

반복문

loop

loop문은 다른 언어에서 while(True)와 같습니다.
loop문 내에 종료 조건을 명시해주지 않으면 무한정으로 반복되게 됩니다.

fn main() {
    loop {
        println!("again!");
    }
}

위 예시는 반복문 내에 종료 조건을 명시해주지 않았기 때문에 반복문이 계속 실행됩니다.

fn main() {
  let mut i = 0;
  loop {
    println!("again!");
    if i >= 10 {
      break;
    }
    i = i + 1;
  }
}

위와 같이 종료 조건을 명시해주고 조건이 참 이라면 break 문을 사용해 반복문을 빠져나올 수 있습니다.

while

while은 조건이 참인 동안만 반복되며 중간에 조건이 충족되면 break 문으로 반복문을 빠져나올 수 있습니다.

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

    while index < 5 {
        println!("the value is: {}", a[index]);

        index = index + 1;
    }
}

예시를 보면 index가 5 미만일 때 동안 while 문이 반복되고 마지막 라인에서 index를 1씩 증가시켜 줍니다.


for

for는 다양한 방법으로 반복시킬 수 있습니다.

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

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

다음과 같이 사용하게 되면 a의 0번 인덱스 원소부터 마지막 원소까지 차례로 element에 대입되게 됩니다.
실행시켜보면

실행 결과

배열 a에 모든 원소 출력을 한 것을 볼 수 있습니다.

특정 횟수 또는 구간을 반복하기 위해서는 다음과 같이 표현할 수 있습니다.

fn main() {
    for number in (1..10) {
        println!("{}!", number);
    }
    println!("LIFTOFF!!!");
}
실행 결과

rev()를 사용하면 역순으로 반복문을 수행할 수 있습니다.

fn main() {
    for number in (1..10).rev() {
        println!("{}!", number);
    }
    println!("LIFTOFF!!!");
}
실행 결과

'Rust' 카테고리의 다른 글

[Rust] 구조체  (0) 2022.04.18
[Rust] 데이터 타입  (0) 2022.04.16
[Rust] 변수 가변성(Mutability)  (0) 2022.04.11
[Rust] 함수  (0) 2022.04.10
Rust 연습해보기  (0) 2022.04.03