gpt4 book ai didi

syntax - 是否有一些语法糖用于匹配深层嵌套的选项和结果链?

转载 作者:行者123 更新时间:2023-11-29 08:22:00 27 4
gpt4 key购买 nike

我正在发出返回一个 Option 的调用,其中包含一个 Result,而该 Result 包含另一个包含自定义变体的 Option
我只对像这样的特定变体结果链感兴趣:

if let Some(Ok(Some(CustomVariant(Some(value))))) = expr {
// handle value case
}

这变得非常冗长并且没有真正帮助,因为我实际上将它视为我所有代码中的单个 Result。我能不能以某种方式为这段代码起别名,这样我就可以做类似以下的事情,而不是编写整个 OptionResult 链:

alias TheCase(value) = Some(Ok(Some(CustomVariant(Some(value))));
if let TheCase(value) = expr {
//handle value
}

最佳答案

你不需要这样的别名,只需要使用一个函数来检索你想要的一个案例:

fn oneCaseICareAbout(value: &Option<Result<Option<Foo>, Bar>>) -> Option<&Foo> {
if let Some(Ok(Some(CustomVariant(Some(value)))) = value {
Some(value)
} else {
None
}
}

if let Some(value) = oneCaseICareAbout(expr) {
//handle value
}

不过,我会考虑重构您的代码以不使用这种类型。 Option<Result<_, _>>已经是一个危险信号,但是 Some(Ok(Some(CustomVariant(Some(…))))正处于疯狂的边缘!

关于syntax - 是否有一些语法糖用于匹配深层嵌套的选项和结果链?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53299891/

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