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

Sentencias condicionales en Rust

Las declaraciones condicionales en el lenguaje Rust tienen este formato:

fn main() {
    let number = 3; 
    if number < 5 { 
        println!("La condición es true"); 
    } else { 
        println!("La condición es false"); 
    } 
}

En el programa mencionado anteriormente, hay una declaración condicional if, esta sintaxis es muy común en muchos otros lenguajes, pero también hay algunas diferencias: primero, la expresión condicional number < 5 No es necesario usar paréntesis para incluir (no es necesario, no está prohibido);pero en Rust no existe la regla de un solo estatuto sin {} en un bloque, no se permite usar una única instrucción en lugar de un bloque. A pesar de esto, Rust aún admite el else tradicional-Gramática de if:

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

Resultado de la ejecución:

b es 1

Las expresiones condicionales en Rust deben ser del tipo bool, por ejemplo, el siguiente programa es incorrecto:

fn main() { 
    let number = 3; 
    if number {   // Error, se esperaba `bool`, se encontró integer308)
        println!("Sí");
    } 
}

A pesar de que C/C++ En el lenguaje se utilizan enteros para expresiones condicionales, 0 es falso, pero esta regla está prohibida en muchos lenguajes que prestan atención a la seguridad del código.

Conectando con la asociación de la expresión de cuerpo de función aprendida en el capítulo anterior:

if <condición> { bloque 1 } else { bloque 2 }

En la sintaxis de este tipo de { bloque 1 } y { bloque 2 } ¿Puede ser una expresión de cuerpo de función?

La respuesta es afirmativa! Es decir, en Rust podemos usar if-La estructura else se implementa de manera similar a la expresión condicional ternaria (A ? B : C) El efecto es:

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

Resultado de la ejecución:

number es 1

Atención¡Las expresiones de cuerpo de dos funciones deben ser del mismo tipo! Y debe haber un else seguido de un bloque de expresiones.