Ruby 中重做和重试语句的用途是什么?

2023-11-26

我能想到的唯一用例redo适用于写入套接字或从数据库读取等操作,但如果这些操作失败一次,后续尝试很可能也会失败,所以对我来说这仍然有点毫无意义,至于retry我真的想不出它会有什么用处。

这对我来说似乎毫无意义,因为我不知道也不使用 Ruby,但我渴望有一天创建一种很棒的语言,所以我想至少知道一些最流行的语言设计背后的原因。


这个想法是你在打电话之前改变一些东西redo or retry,希望你所做的一切第二次都能奏效。我没有例子redo,但我们发现了用途retry在我正在开发的应用程序中。基本上,如果您有一些代码可能由于外部原因(例如网络)而失败,但每次运行代码时执行前提条件检查的成本太高,您可以使用retry in a begin...rescue堵塞。不确定这是否清楚,所以我将直接举例说明。

基本上,我们有一些使用以下命令访问远程目录的代码Net:SFTP。目录should存在,但在某些特殊情况下尚未制定。如果它不存在,我们想尝试一次来实现它。但是每次执行网络访问来检查目录是否存在的成本太高,特别是因为只有在特殊情况下目录才会不存在。所以我们这样做:

tried_mkdir = false
begin
  # Attempt to access remote directory
  ...
rescue Net::SFTP::StatusException
  raise if tried_mkdir
  tried_mkdir = true
  # Attempt to make the remote directory
  ...
  retry
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby 中重做和重试语句的用途是什么? 的相关文章

随机推荐

  • 需要 JavaScript 原型解释

    我通常在我的项目中以这种方式创建我的类 对象文字 var objectName global variables a somevalue func1 function func2 function 如果我必须将其转换为原型格式 我该怎么做
  • SwiftUI 控制台显示 CVDisplayLink 相关消息?

    当我运行我正在开发的基于 MacOS 的 SwiftUI 应用程序时 我在控制台上收到大量输出 例如 2021 12 08 12 40 14 439565 0000 SpDriveApp 6801 159299 0x7fe6e7830820
  • HTML如何在网页中插入动态日期

    我有一个静态网页 没有任何动态变化 然而 客户希望将日期插入到页面内的文本中 该日期将始终是当前日期加上一天 我怎么做 使用 JavaScript 并在加载时插入日期 看一下这里的工作示例 http jsfiddle net xGDvp 这
  • 被 FoldLeft 错误困惑(在 Eclipse 和 REPL 中)

    其背景非常简单 我的假设基于 Odersky 的书 Programming in Scala 2nd Edition 第 8 5 节描述了 占位符语法 我有一个 List List Boolean 即矩形位图 我试图在其中计算值 true
  • 什么是自动覆盖索引?

    使用时EXPLAIN QUERY PLAN在 SQLite 3 中 它有时会给我输出 例如 SEARCH TABLE staff AS s USING AUTOMATIC COVERING INDEX is freelancer AND s
  • 如何将图像和录制文件保存在临时目录中?

    我想将从我的应用程序中拍摄的相机照片和视频录制存储在临时目录中的单独文件夹中一段时间 当任务完成时 他们将保存到数据库中 如何将从相机和视频录制文件中拍摄的图片保存在临时目录中的单独文件夹中 您正在寻找这个来访问缓存文件夹来存储临时文件 N
  • R:ggfortify:“自动绘图不支持 prcomp 类型的对象”

    我正在尝试使用 ggfortify 来可视化我使用 prcomp 所做的 PCA 结果 示例代码 iris pca lt iris c 1 2 3 4 autoplot prcomp iris pca 错误 自动绘图不支持 prcomp 类
  • JPA Hibernate n+1 问题(Lazy 和 Eager Diff)

    我试图理解 n 1 问题 从而找到正确的解决方案 我有两个实体 公司 Entity Table name company public class Company implements Serializable private static
  • 以最小总距离连接所有点的算法

    我有一组点和适用于每对点的距离函数 我想将所有点连接在一起 总距离最小 你知道我可以使用的现有算法吗 每个点都可以链接到几个点 所以这不是通常的 推销员行程 问题 Thanks 你想要的是一个最小生成树 生成一个最常见的两种算法是 Prim
  • List 是否有协变可变版本?

    我已经将我真正想要注释的代码简化为这个最小版本 def print it numbers or nones for i number in enumerate numbers or nones if number is None numbe
  • 通过浏览器上传大文件(100 GB)

    有没有办法上传大文件 超过 80 GB 通过网络浏览器 以前我一直使用 plupload 上传文件 img png jpg 但它似乎不适用于较大的文件 我还想知道如何实现一个用户可以上传的网页 例如 Mega co nz 或 Drive g
  • context:annotation-config 是 @AutoWired 的替代品吗?

    我可以这样说吗 context annotation config在我的 XML 配置中 它会自动注入 bean 类而不需要任何注释 因此 不要使用这些注释类型 public class Mailman private String nam
  • Flask-Restless 转储 Flask-Sqlalchemy 中的十进制值

    我有这个使用 Flask SQLAlchemy 的模型 class Menu Document db Model id db Column db Integer primary key True autoincrement True nam
  • 如何通过home-brew m1 mac安装anaconda

    我刚买了一台 m1 Mac 并使用 home brew 安装了 anaconda brew install anaconda 看起来它工作得很好 除了当我真正去使用 anaconda 并输入 conda 时 我得到了可怕的 conda 命令
  • 在 Python 中求解具有时滞的 ODE

    任何人都可以给我一些建议 如何解决Python中实现了时间延迟的ODE 我似乎无法弄清楚如何使用 scipy integrate odeint 来做到这一点 我正在寻找的内容应该如下所示 the constants in the equat
  • 如何在控件中嵌入 firemonkey 表单?

    我尝试在滚动框中嵌入表单 procedure TfrmMain FormCreate Sender TObject var Control TControlView begin Control TControlView Create Sel
  • 用 Emacs 替换正则表达式

    我正在尝试做一个搜索并用正则表达式替换 假设我有一个foreach foo1 txt foo2 txt foo3 txt foo4 txt 我想在列表中的每个项目周围加上 我认为 从文档 这个正则表达式可以工作 foo 1 4 txt gt
  • glmnet 如何计算最大 lambda 值?

    The glmnet包使用了一系列LASSO调整参数lambda从最大缩放lambda max在此情况下不选择预测变量 我想知道如何glmnet计算这个lambda max价值 例如 在一个简单的数据集中 set seed 1 librar
  • 如何使用正则表达式前瞻来限制输入字符串的总长度

    我有这个正则表达式 想要添加限制总长度不超过 15 个字符的规则 我看到了一些前瞻示例 但它们不太清楚 你能帮我修改这个表达式以支持新规则吗 A Z A Z 既然您在标题中提到了这一点 那么对您的案例的负面展望将是 16 regex goe
  • Ruby 中重做和重试语句的用途是什么?

    我能想到的唯一用例redo适用于写入套接字或从数据库读取等操作 但如果这些操作失败一次 后续尝试很可能也会失败 所以对我来说这仍然有点毫无意义 至于retry我真的想不出它会有什么用处 这对我来说似乎毫无意义 因为我不知道也不使用 Ruby