English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Rust 조건문

Rust 언어의 조건 문은 다음과 같은 형식으로 사용됩니다:

fn main() {
    let number = 3; 
    if number < 5 { 
        println!("조건이 true"); 
    } else { 
        println!("조건이 false"); 
    } 
}

위 프로그램에서 조건 if 문이 있습니다. 이 문법은 많은 다른 언어에서 흔히 볼 수 있지만, 몇 가지 차이점이 있습니다: 먼저, 조건 표현식 number < 5 소괄호를 사용하지 않아도 됩니다(소괄호를 사용하지 않는 것이 아니라 금지되지 않습니다);하지만 Rust의 if는 단일 문장을 {}에 포함하지 않는 규칙이 없으며, 한 문장을 블록으로 대체할 수 없습니다. 그러나 Rust는 전통적인 else를 지원합니다.-if 문법:

fn main() { 
    let a = 12; 
    let b; 
    if a > 0 { 
        b = 1; 
    }  
    else if a < 0 { 
        b = -1; 
    }  
    else { 
        b = 0; 
    } 
    println!("b는 {}", b); 
}

실행 결과:

b는 1

Rust의 조건 표현식은 bool 타입이어야 하며, 다음과 같은 프로그램은 오류입니다:

fn main() { 
    let number = 3; 
    if number {   // 에러, expected `bool`, found integer (rustc(E0308)
        println!("Yes");
    } 
}

C는/C++ 언어의 조건 표현식은 정수로 표현되며, 0이 아닌 경우 참으로 간주됩니다. 그러나 이 규칙은 많은 코드 보안성을 중시하는 언어에서는 금지되어 있습니다.

이전 장에서 배운 함수 표현식과 연상을 해보면:

if <condition> { 블록 1 } else { 블록 2 }

이 문법에서 { 블록 1 }{ 블록 2 } 함수 표현식이 될 수 있을까요?

정답은 예입니다! 즉, Rust에서는 if를 사용할 수 있습니다-else 구조는 삼항 조건 연산자 표현식과 유사합니다 (A ? B : C) 의 효과:

fn main() { 
    let a = 3; 
    let number = if a > 0 { 1 } else { -1 }; 
    println!("number는 {}", number); 
}

실행 결과:

number는 1

주의두 함수 표현식의 타입은 같아야 하며, 반드시 else와 그 뒤의 표현식 블록이 있어야 합니다!