红宝石在线救援

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(使用前将#替换为@)

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

  • 从类内部调用属性访问器方法[重复]

    这个问题在这里已经有答案了 我正在尝试调用我的类属性编写器之一 但由于某种原因它永远不会被调用 下面是一些代码 可以使这一点更清楚 class Test attr reader test def test val puts Called t
  • 如何在 gem 的示例脚本中使用 pry-byebug ?

    我正在制作我的第一个 gem 它不是 Rails 应用程序 而是一个带有一些 AI 的 tic tac toe 库 这样我就可以与一个永远不会输的计算机对手比赛 并在可能的情况下强行获胜 现在我正在尝试调试人工智能中的攻击策略 但我似乎无法
  • Ruby mp3 Id3 解析

    目前我正在从事一个音乐项目 处理用户 mp3 上传 问题是我找不到适用于所有文件的 id3 库 我努力了id3 ruby and Mp3Info库 但它们都没有给我一致正确的结果 例如 最常见的问题 错误的流参数 比特率和采样率 有时是持续
  • 什么是 - 获取的是一个目录 - 错误消息

    我收到这个奇怪的错误 Users gideon Documents ca ruby rubytactoe lib player rb 13 in gets Is a directory spec Errno EISDIR 玩家规格 rb r
  • 使用复选框过滤列表

    我有一个电影列表及其评级 在我的页面顶部 我有一个表单 其中提供了一个复选框列表 其中显示了每个可用的评级 G PG 13 等 一旦用户单击复选框并点击提交 我只想显示所选的电影 在我的索引方法中 我有一个名为的实例变量 filtered
  • 回形针不支持 .doc 文件

    在 Rails 4 0 2 中 我使用回形针 gem 上传文件 但它不支持 doc 文件 在文件上传字段下方 显示一条错误消息 扩展名与其内容不匹配 在模型中 检查内容类型的验证如下 validates attachment content
  • 下载所有 gems 依赖项

    我想通过下载任何所需的文件并将它们带到另一台计算机来安装指南针没有互联网连接 我已经下载了指南针的源包 当我在未连接的计算机上运行 gem 时 它抱怨缺少依赖项 有什么解决办法吗 这正是我遇到的问题 经过一段时间的搜索后 我找到了一个可以使
  • 如何使用 Ruby on Rails 3 检查 HTTP 请求的“Content-Length”字段?

    我正在使用 Ruby on Rails 3 在我的视图文件中我有以下代码 为了避免服务器过载 我会在服务器接收上传文件之前检查上传文件的大小 这是因为 按下表单的提交按钮 服务器会先完整接收文件 然后再检查文件 我知道一个HTTP 请求有标
  • rspec 中的模拟方法链

    有一系列方法可以获得user目的 我试图模拟以下内容以返回user in my Factory Girl current user AuthorizeApiRequest call request headers result 我可以模拟该
  • 在 Rails 中呈现路由错误的 404 页面

    我试图在 Rails 中渲染集成的 404 页面作为例外 我尝试了这个 但仍然收到路由错误页面 posts controller rb def destroy if current user username post email post
  • Ruby on Rails Webpacker 找不到 asset_pack_path 下的图像

    我在使用 Ruby on Rails Webpacker 在视图中包含图像时遇到问题 当我尝试使用 html img 标签和 asset pack path 在我的视图中插入图像时 出现错误 我的图像位于app javascript ima
  • 如何加载 UrlHelper 和 Rails 中的路线?

    我想包括路线和link toPORO 中的方法 在控制台中测试这个时 我遇到了这个 如果我在没有路由助手的情况下包含 UrlHelper 一切似乎都工作正常 ruby 1 9 3 rc1 001 gt Rails version gt 3
  • ruby 管道、IO 和 stderr 重定向

    我希望有一个 ruby 程序 一个 rake 任务 观察另一个 rake 任务的输出 输出写入器输出到 stderr 我想读一下这些行 我很难设置它 如果我有一个作家 stdout writer rb 不断打印一些东西 usr bin en
  • 如何在 Ruby 中创建自定义排序方法

    我想指定一个自定义块方法 通过评估两个属性来对对象数组进行排序 然而 经过多次搜索 我没有找到任何没有的例子 lt gt 操作员 我想比较a to b if a x less than b x return 1 if a x greater
  • 在 ruby​​ 中创建登录会话时理解“current_user”概念

    我正在阅读很棒的 Michael Hartl 教程来构建 ruby 应用程序here http ruby railstutorial org chapters sign in sign out sec 3acurrent user 我试图理
  • 从 float 转换的 Ruby Time 对象不等于原始 Time 对象

    time Time now fvalue time to f return time Time at fvalue 有人可以解释为什么上面的表达式返回 false 吗 如何从 float 创建一个与原始时间变量匹配的新 Time 对象 Th
  • HMC SHA1 哈希 - C# 生成与 Ruby 不同的哈希输出

    我正在尝试为我正在使用的第三方服务快速获取一个有缺陷的 Net 客户端库 原始库 可以运行 是用 Ruby 编写的 但 DotNet 的等效库会向 Ruby 库生成不同的哈希输出 Ruby加密代码如下 def self encrypt st
  • 启动同一作业的多个延迟作业进程

    我在运行多个工作人员的设置中使用延迟作业 就我的问题而言 这并不重要 但假设我运行 10 个工作线程 当前在开发模式下执行此操作 我遇到的问题是两个不同的工作人员有时开始处理同一项工作 调用我的工作对象上的执行方法 据我所知 延迟作业正在使
  • 在 Yosemite 上安装 Ruby 1.9.2 时出错

    我在 Yosemite 上使用 rvm 安装 ruby 1 9 2 时遇到错误 有人可以帮助我吗 我更新了自制程序和rvm 我正在与其他人合作处理这个项目 所以我无法升级 ruby 我在下面放置了我的输出的链接 提前致谢 Kanyons M
  • 如何在 Ruby 中重写 require ?

    我需要覆盖require来自 Ruby 文件 这是我的 start rb 应用程序入口点 所必需的 rubygems在此之前加载 位于 start rb 中 我尝试的所有操作都出现了堆栈溢出错误 正确的做法是什么 一般来说 如果你想修补一些

随机推荐

  • 方案/球拍:画布操作

    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