rust - 有没有办法从闭包内部的函数返回?
问题描述
我有以下简化代码:
fn f() -> i32 {
let a = some_result.unwrap_or_else(|_| {
return 1; // want to return this value from f <-------------
});
}
1
在这个特定的错误情况下,我想从整个函数返回值,f
但我不知道如何从闭包中做到这一点。
如果我改为使用match
表达式,它可以正常工作,如下所示:
fn f() -> i32 {
let a = match some_result {
Ok(result) => result,
Err(_) => { return 1; },
};
}
然而,这使得代码冗长,因为我有一个微不足道的Ok
匹配臂。
解决方案
不,那里没有。
闭包是底层的一种方法(一种函数)。您要求能够从任意深度嵌套的函数调用中退出父函数。这种非本地流控制通常被证明对程序员的理智和程序维护极为不利。
要解决您的问题:
推荐阅读
- asp.net-web-api2 - 如何在 WebApi 2 中登录 Alexa Linked Account?
- java - 如何向 tableView 添加值?
- python - python 使用 super() 显示所有属性
- python - 将列表中的元素从 (x,y) 更改为 (y,x)?
- asp.net-core - ASP.NET 核心 5:本地化身份
- javascript - 在 React JSX 中运行循环并应用条件
- qt - 你如何在 QT 中找回 Designer 窗口?
- flutter - 如何获取评分值 Flutter rating Bar 以在 onPressed 函数中使用
- reactjs - 如何显示以状态保存的图像?
- python - CountVectorizer - 忽略出现次数少于 x 且字符少于 y 的单词