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

Sentenças Condicionais do Rust

As instruções condicionais no idioma Rust têm a seguinte forma:

fn main() {
    let number = 3; 
    if number < 5 { 
        println!("Condição verdadeira"); 
    } else { 
        println!("Condição falsa"); 
    } 
}

No programa acima há uma instrução condicional if, essa sintaxe é muito comum em muitos outros idiomas, mas também há algumas diferenças: primeiramente, a expressão condicional number < 5 Não é necessário usar parênteses ao redor (não é proibido, não permitido); mas o if do Rust não tem a regra de usar {} para um único comando sem bloco, não é permitido usar uma única sentença para substituir um bloco. No entanto, o Rust ainda suporta o else tradicional-A sintaxe do 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); 
}

Resultado da Execução:

b é 1

As expressões condicionais no Rust devem ser do tipo bool, por exemplo, o programa a seguir está errado:

fn main() { 
    let number = 3; 
    if number {   // Erro, esperado `bool`, encontrado inteirorustc(E0308)
        println!("Sim");
    } 
}

Embora C/C++ As expressões condicionais da linguagem são representadas por inteiros, 0 ou verdadeiro, mas essa regra é proibida em muitos idiomas que se concentram na segurança do código.

Combinando com o que aprendemos sobre expressões do corpo da função anterior, vamos associar:

if <condition> { bloco 1 } else { bloco 2 }

A sintaxe dessa { bloco 1 } e { bloco 2 } Pode ser uma expressão do corpo da função?

A resposta é afirmativa! Isso significa que, no Rust, podemos usar if-A estrutura else é semelhante à expressão de operador ternário (A ? B : C) O efeito é:

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

Resultado da Execução:

number é 1

AtençãoDois expressões do corpo da função devem ter o mesmo tipo! E deve haver um else seguido de um bloco de expressão.