红宝石在线救援

2024-04-03

我最近了解到你可以使用rescue在一行代码上,以防该行出现问题(请参阅http://www.rubyinside.com/21-ruby-tricks-902.html http://www.rubyinside.com/21-ruby-tricks-902.html提示#21)。我有一些代码曾经看起来像这样:

if obj['key'] && obj['key']['key2'] && obj['key']['key2']['name']
  name = obj['key']['key2']['name']
else
  name = ''
end

随着rescue方法,我相信我可以将该代码更改为如下所示:

name = obj['key']['key2']['name'] rescue ''

如果在访问哈希的任何级别抛出 nil 异常,它应该被救援捕获并给我 '',这就是我想要的。我也可以选择将名称设置为nil如果这是期望的行为。

这样做有任何已知的危险吗?我这么问是因为这看起来好得令人难以置信。我有太多丑陋的代码,我很想摆脱它,就像第一个代码示例一样。


读起来不错!但这会影响你的表现。在我的经验中rescue触发时速度慢得多,未触发时速度稍慢。在所有情况下if是比较快的。另一件需要考虑的事情是,不应预期出现异常,并且您有点使用此代码。拥有如此深层嵌套的哈希可能是一种需要重构的好味道

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

红宝石在线救援 的相关文章

随机推荐

  • 方案/球拍:画布操作

    1 正如标题所述 当我调整窗口大小时 我绘制的对象消失 但矩形保持原样 2 原点从左上角开始 但我希望它在左下角 3 除了绘图库之外 我找不到任何缩放功能 所以如果我希望实现这样的功能 一个选项是通过绘制更大的对象并刷新画布来 缩放 def
  • 使用 FileUpload 过滤文件扩展名

    我正在编写一个 ASP NET Web 应用程序 其中涉及使用FileUpload控制 此刻 这个特殊的FileUpload控件仅需要 zip 或 gz 文件类型 如果上传的文件类型不正确 则会向用户显示错误消息 该功能已经实现 我想要做的
  • Windows Phone 8.1 中的信标 - 没有可能性吗?

    首先 是的 我已经阅读了所有其他类似的问题 其次 我正在开发应用程序 WP 8 1 WinRT 它必须使用信标 我读了很多相关内容 我知道 如果不先配对 通常无法与 BLE 设备连接 但希望最后会破灭 所以我想问一下我有什么可能性 可以在代
  • 一次上传两个文件

    我正在尝试使用 codeigniters 上传类一次上传两个文件 两个文件字段 尽管提供了字段名称 codeigniter 仍会在第二个字段上产生错误 这是 codeigniter php 或 html 的限制 还是我只是错误地使用了该类
  • $concat mongodb 中的两个字段

    我有这两个集合 employees id NumberInt 0 name Max surname Power and loggableUser id NumberInt 0 employee NumberInt 1 现在我必须在以下查询中
  • 如何以递归方式将 React 组件渲染到自身中

    我有一个组件 即列表组件 列表组件可以渲染项目 通过组件ListItem 通过下面的内容可以轻松实现 import React from react import ListItem from list item list item clas
  • 如何使用 FastAPI 防止表单输入时页面重新加载

    我有一个使用 FastAPI 的简单程序 它将浮点值乘以 2 并将其显示在 HTML 中 该值通过 HTML 表单输入 我想知道如何获得动态显示的值 而无需在按 Enter 或按提交按钮时重新加载页面 以下是脚本 main py 和 dou
  • 在 C# 中用点和小数格式化数字[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我需要先 点 然后逗号 例如 1234567 这是一个数字或金钱的示例 我想要像 1 234 567 00 谁能给我答案 如果执行代码的计算
  • Gcc 卸载编译选项

    我正在尝试使用 Ubuntu 18 04 上的 gcc 10 CUDA 11 和此 CMakeLists txt 文件 或 OpenMP 版本 构建最简单的具有 GPU 卸载功能的 OpenMP 或 OpenACC C 程序 cmake m
  • 下载的php总是损坏

    我有一个用 PHP 编写的下载脚本 我的视图文件脚本链接到 ids 然后选择与该 ID 匹配的所有数据 然后使用该数据下载照片 我的照片在文件夹中重要吗 它被移动到一个文件夹 然后该目录被上传到MYSQL数据库 目前的代码现在允许一些文件完
  • Python3,与列表重新匹配

    我读到了这个 https stackoverflow com a 17090205 6426449 https stackoverflow com a 17090205 6426449 我制作了一个不能在 django 中的用户名上使用的列
  • 在 WSL (Ubuntu) 中安装适用于 python3 的 venv

    我正在尝试配置venv在带有 Ubuntu 的 Linux 的 Windows 子系统上 我尝试过的 1 安装venv通过pip pip3 准确地说 pip3 install venv 我收到以下错误 ERROR Could not fin
  • 我应该如何在 PHP 中实现延迟会话创建?

    默认情况下 PHP 的会话处理机制会设置会话 cookie 标头并存储会话 即使会话中没有数据也是如此 如果会话中没有设置数据 那么我不想要Set Cookie在响应中发送到客户端的标头 我不希望在服务器上存储空会话记录 如果数据添加到 S
  • 表达式 > 作为属性

    我正在尝试重构通用存储库的一些代码 该存储库传入一个过滤器对象 该过滤器对象将过滤数据以及页面 排序等 各传承Filter 例如 CustomerFilter 可以选择定义自己的表达式过滤器 该过滤器将由存储库中的基类应用 因此客户过滤器将
  • 如何在 Hibernate 中进行基于自定义查询的集合映射?

    我有一个对象被映射为一组对象 非常简单 然而 我真正想做的是为该映射设置一些标准 这是当前的映射
  • 尝试在空对象引用上调用虚拟方法“int java.lang.String.length()”[重复]

    这个问题在这里已经有答案了 所以我有带有选项卡的 Android 应用程序RecyclerView 当我运行我的应用程序时 它崩溃了 logcat java lang NullPointerException Attempt to invo
  • 将网站部署到 Azure 和传统 IIS

    我目前使用旧版 ASP NET Web 应用程序 未来的要求之一是它可以部署到 Windows Azure 我想知道管理 Azure 和传统 IIS Web 服务器的部署有多困难 Azure 似乎需要 Web 应用程序项目的特定自定义版本
  • 来自代码的队列 Azure DevOps YAML 管道不接受运行时参数

    YAML 管道如下所示 parameters name parameter1 type string steps task PowerShell 2 inputs targetType inline script Write your Po
  • PHP 解析错误:语法错误,意外的 ':',期望 ';'或者 '{'

    我正在尝试玩 php7 我已经安装了https github com rlerdorf php7dev https github com rlerdorf php7dev并通过phpstorm连接 我正在尝试使用这样的新功能
  • 红宝石在线救援

    我最近了解到你可以使用rescue在一行代码上 以防该行出现问题 请参阅http www rubyinside com 21 ruby tricks 902 html http www rubyinside com 21 ruby tric