将变量与不使用匹配值的模式保护匹配的首选方法是什么?

时间:2015-05-30 12:10:48

标签: rust

在下面的两个片段之间,哪个更好/更喜欢?

fn main() {
    let pair = 7;

    match pair {
        pair if pair > 5 => println!("Yeah"),
        _ => println!("No"),
    }
}
fn main() {
    let pair = 7;

    match pair {
        _ if pair > 5 => println!("Yeah"),
        _ => println!("No"),
    }
}

还有更好的方法来写这个吗?因为这不起作用:

fn main() {
    let pair = 7;

    match pair {
        > 5 => println!("Yeah"),
        _ => println!("No"),
    }
}

1 个答案:

答案 0 :(得分:5)

首选不绑定匹配变量的版本:

fn main() {
    let pair = 7;

    match pair {
        _ if pair > 5 => println!("Yeah"),
        _ => println!("No"),
    }
}

这是匹配的最短版本。当然,这个例子可以使用if

我真的很惊讶第一个版本没有对未使用的变量发出警告。

啊,这是我很傻。这里使用变量 ,在模式保护中。 ^ _ ^