gpt4 book ai didi

if-statement - 当我不关心 `if` 语句中包含什么值时,如何使用枚举?

转载 作者:行者123 更新时间:2023-11-29 08:06:09 25 4
gpt4 key购买 nike

我有一个枚举:

#[derive(PartialEq, Eq)]
enum Foo {
A,
B(usize),
}

我可以在涉及 baz 等其他逻辑的 if 语句中使用它:

fn bar(foo: &Foo, baz: bool) {
if foo == &Foo::B(3) || baz {
println!("Do stuff")
}
}

但是,这不会编译:

fn bar(foo: &Foo, baz: bool) {
if foo == &Foo::B(_) || baz {
println!("Do stuff")
}
}

当我不关心 B 包含什么值时,如何在 if 语句中使用它?

最佳答案

在这种情况下,使用匹配可能更容易:

fn do_stuff() {
println!("Do stuff")
}

fn bar(foo: &Foo, baz: bool) {
match foo {
&Foo::B(_) => do_stuff(),
_ => {
if baz {
do_stuff();
}
}
}
}

或者使用if let:

fn bar(foo: &Foo, baz: bool) {
if let &Foo::B(_) = foo {
do_stuff();
} else {
if baz {
do_stuff();
}
}
}

我不确定您是否可以轻松地将所有内容合并到一个条件中,不幸的是,这会让您重复do_stuff

关于if-statement - 当我不关心 `if` 语句中包含什么值时,如何使用枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47824393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com