如何检查两个变量是否均为Some?

内尔达夫

我对Some(T)关键字感到困惑

我想检查两个变量,如果值已定义(不是None)。在这种情况下,将处理此变量的值。

我知道这样的match模式:

match value {
    Some(val) => println!("{}", val),
    None => return false,
}

如果使用此模式,它将变得非常混乱:

match param {
    Some(par) => {
        match value {
            Some(val) => {
                //process
            },

            None => return false,
        }
    },

    None => return false,
}

这不是正确的解决方案。

这是一种可能性,询问是否is_some()会影响这样的代码的参数和值

if param.is_some() && value.is_some() {
    //process
}

但是,如果我那样做,我总是必须拆包paramvalue访问值。

我想到了这样的事情来避免这种情况。但是此代码不起作用:

if param == Some(par) && value == Some(val) {
    //process
}

这个想法是值可以被版本访问parval就像在match版本中一样。

有什么解决方案可以做这样的事情吗?

马茨·金达尔

如果我有多个Option要匹配的值,则匹配一个元组的值:

enum Color {
    Red,
    Blue,
    Green,
}

fn foo(a: Option<Color>, b: Option<i32>) {
    match (a, b) {
        (Some(Color::Blue), Some(n)) if n > 10 => println!("Blue large number"),
        (Some(Color::Red), _) => println!("Red number"),
        _ => (),
    }
}

fn main() {
    foo(Some(Color::Blue), None);
    foo(Some(Color::Blue), Some(20));
}         

这使我可以匹配有趣的组合,并丢弃其余的组合(如果要这样做,则返回false)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何检查两个值是否均为空

如何使用if或语句检查两个变量是否相同

检查是否设置了两个变量?

检查两个变量是否相等

htaccess-如何比较环境变量-检查两个环境变量是否相同

如何在PHP中检查是否设置了变量,并检查两个值是否与设置的变量匹配?

如何检查两个变量是否具有相同的引用?

如何检查两个变量是否在Python中引用了同一对象?

如何检查两个变量是否指向内存中的同一对象?

如何检查两个引用变量是否借用了同一对象?

如何更好地检查两个char变量是否在某些值集中?

如何使用两个 for 循环来检查列表中的行是否等于变量

在类模板方法中使用enable_if检查两个函数参数参数是否均为std :: array或均为std :: vector

如何检查一个变量的两个条件?

如何检查Bash中两个路径是否相等?

如何检查两个排列是否对称?

如何检查是否满足两个条件?

如何比较两个DynamicJsonObjects以检查它们是否相等?

如何检查两个对象数组是否与 javascript 相等?

如何检查两个 NumPy 数组是否近似相等?

如何检查两个矩阵是否相同?

如何检查两个集合是否包含相同的对象

如何检查两个文件内容是否相同?

如何检查两个Torch张量或矩阵是否相等?

如何检查两个Map对象是否相等?

如何检查两个分支是否为“偶数”?

如何检查两个线段是否相交?

如何检查两个流是否不相交?

如何检查数字是否在两个值之间?