Ruby 中的“if (a == b || c == b)”语句可以做得更短吗

2024-02-08

我有一段 Ruby 代码,如下所示:

def check
  if a == b || c == b
  # execute some code
  # b = the same variable
  end
end

这可以写成这样

def check
  if a || c == b
  # this doesn't do the trick
  end
  if (a || c) == b
  # this also doesn't do the magic as I thought it would
  end
end

或者以一种我不需要打字的方式b两次。这是出于懒惰,我想知道。


if [a, c].include? b
  # code
end

然而,这比您想要避免的代码要慢得多——至少只要a, b and c是基础数据。我的测量结果显示系数为 3。这可能是由于额外的Array对象创建。因此,您可能必须在这里权衡 DRY 与性能。不过,通常情况下这并不重要,因为这两种变体都不需要很长时间。

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

Ruby 中的“if (a == b || c == b)”语句可以做得更短吗 的相关文章

  • 在轮询器内异步运行代码

    在我的 ruby 脚本中 我使用 celluloid zmq gem 我尝试在轮询器内异步运行评估响应 使用 async evaluate response socket read multipart 但是 如果我从循环中删除睡眠 不知何故
  • 遏制gem安装:捆绑安装失败,但正常gem安装有效[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions solve
  • 如何将命令行参数传递给 rake 任务

    我有一个 rake 任务需要将一个值插入到多个数据库中 我想从命令行或从another耙任务 我怎样才能做到这一点 您可以通过向任务调用添加符号参数来指定 rake 中的形式参数 例如 require rake task my task a
  • 执行 rvm use 2.0.0 --default 时收到“警告!路径未正确设置”

    以上第一次不起作用 第二次起作用 尝试将任何新 shell 窗口的 ruby 版本设置为 2 0 0 Doing rvm use 2 0 0 default gives Warning PATH is not properly set up
  • Capybara 2.0 和 rspec-rails -- 助手在规范/功能中不起作用

    我正在尝试使用辅助模块中的方法 但 rspec 似乎无法识别辅助程序以进行测试spec features 请注意 唯一的更改是spec helper rb正在添加require capybara rspec 我尝试移动helper rb t
  • 在 Ruby 中生成 GUID

    我有一个问题 用 GUID 很容易解决 特别是 对于密码重置工作流程 我想将 GUID 令牌发送到用户的电子邮件并让他们使用该令牌重置密码 由于 GUID 是唯一的 因此这非常安全 并且可以避免我通过电子邮件向人们发送密码 这是有风险的 我
  • 不同金额的 Stripe 订阅计划

    我正在为一家慈善机构制作一份捐赠表格 他们要求提供每月捐赠计划 用户可以选择他们想要捐赠的任何金额 我知道我可以制定个人计划 即 如果他们说每月捐款 5 美元 10 美元或 20 美元 我可以制定三个不同的计划并向用户订阅它们 有没有办法避
  • Guard 不会加载 WDM

    我正在学习 Michael Hartl 的 Rails 教程 到目前为止该教程非常出色 我在高级设置一章中 他以有利于 TDD 的方式配置 Rails 环境 我安装了 Guard 并且通过运行我在 spec 文件夹中的测试 它一直正常运行
  • File.delete 上的 Ruby (Errno::EACCES)

    我试图在使用完一些 XML 文件后删除它们 其中一个文件给了我这个错误 delete Permission denied monthly builds xml Errno EACCES Ruby 声称该文件受到写保护 但我在尝试删除它之前设
  • Selenium 找不到“spec”文件夹

    因此 我正在尝试建立本地系统来帮助完成仅使用 Rails 的雇主的现有项目 他们希望我主要关注 rspec 测试 因为该项目几乎可以正常运行 我需要充实他们错过的东西 但是 我无法获取 rake spec 来构建我的测试文件夹 事实上 测试
  • 如何在 .js 中的字符串中插入来自 ruby​​ 示例的变量[重复]

    这个问题在这里已经有答案了 在 ruby 中 您可以将变量插入到字符串中 如下所示 x sake puts I like x I like sake 例如 def what i like word I like word end 在 jav
  • GitHub API:标记提交所属(与 git describe --tag 并行)

    我正在使用 GitHub API 进行实验octokit https github com octokit octokit rb红宝石 我的目标是能够提取提交 SHA 所属的 标签 现在我可以使用命令行轻松地执行此操作 gt git des
  • 为什么这个 Ruby 方法返回“空值表达式”错误?

    我有这个简单的方法 def is palindrome sentence raise ArgumentError new expected string unless sentence is a String safe sentence s
  • 如何覆盖 Ruby Ranges 的 .. 和 ... 运算符以接受 Float::INFINITY?

    我想覆盖 and Ruby 中的运算符Range 原因是 我正在处理数据库中的无限日期范围 如果你拉一个infinty从 Postgres 中取出日期时间 你会得到一个Float INFINITY在红宝石中 问题是 我无法使用Float I
  • sleep 0 有特殊含义吗?

    我看到很多用法sleep 0在我的一个客户项目中 代码看起来像这样 while true sleep 0 end 阅读一些像这样的答案this https stackoverflow com questions 3727420 signif
  • Rails 中的 PDF 导出

    我需要将包含一些图表的 HTML 页面导出为 PDF 有哪些好的 gem 可以做到这一点 PDFKit http railscasts com episodes 220 pdfkit http railscasts com episodes
  • 红宝石边缘情况

    ruby 有一些边缘情况很难解释 因为解析会带来一些有趣的问题 我在这里列出其中两个 如果您知道更多 请添加到列表中 def foo 5 end this one works if tmp foo puts tmp to s end How
  • Ruby 中的并行赋值运算符

    我正在查看 Ruby 编程 书中的一个示例 def fib up to max i1 i2 1 1 parallel assignment i1 1 and i2 1 while i1 lt max yield i1 i1 i2 i2 i1
  • 通过推送通知唤醒

    Suppose 有一些对象 例如 一个数组a 和依赖于对象的条件 例如 a empty 当前线程以外的某些线程可以操作该对象 a 因此条件评估值的真实性会随着时间的推移而变化 如何让当前线程在代码中的某个时刻休眠 并在条件满足时通过推送通知
  • Ruby 枚举器中的“break”与“raise StopIteration”

    如果我使用 Ruby Enumerators 来实现生成器和过滤器 generator Enumerator new do y x 0 loop do y lt lt x x 1 break if x gt CUTOFF end end l

随机推荐

  • 反应上下文不更新

    我已经设置了一个使用 Context 来存储页面标题的基本示例项目 但是当我设置它时 组件不会重新呈现 主要文件 上下文 js import React from react const Context React createContex
  • React 上下文消费者如何访问消费组件的引用

    我使用以下方法构建了一个高阶组件React 的新上下文 API https reactjs org docs context html我正在尝试找到一种能够访问参考的方法 通过ref 包装的子组件 tl dr 本质上我想要转发裁判 http
  • Backbone.js 链接文件到模型

    我正在使用 django 和backbone js 创建一个Web 应用程序 问题是我需要将文件上传到服务器 如何将主干模型与文件链接 因此 当我执行 model save 时 文件会上传到服务器 编辑 只是为了让事情变得清楚 我想做的是将
  • 在 Flutter 中使用 JsonSerialized 时如何识别动态键?

    让我们假设 直到最近 我才听到下面的声音Json response AA product id 111 type C 而且 我写了下面的内容 model dart从 json 转换为对象 模型 dart JsonSerializable c
  • 从 Groovy 中的闭包修改脚本变量

    我正在尝试从函数的闭包内部修改脚本变量 这个问题可以归结为 groovy transform Field int myField 0 incrementField assert myField 1 def incrementField 1
  • 调试断言失败 c >= -1 && c <= 255

    我很难理解我的代码的运行时错误 这是我的班级作业 我认为很容易 但发生了一些奇怪的事情 我在下面发布了我的代码 这个作业的提示是创建一个程序 要求用户输入一些单词 然后它应该输出有多少个单词 我有一个朋友运行了该程序并且它有效 但是 每当我
  • 使用 Karma Runner 生成 jasmine 报告

    我想获得所有成功的茉莉花规格与业力运行的报告 就像您单独使用茉莉花时获得的那样 有办法实现这个目标吗 试试我写的这个快速插件 https github com dtabuenc karma html reporter https githu
  • jQuery 父元素内部 HTML

    我通过以下方式获取元素的内部 HTML this context innerHTML 然后我得到父内部 HTML this parent context innerHTML 但这段代码返回相同的值 任何想法有什么问题吗 要获取元素的内容 则
  • CMake 顶级 Xcode 项目属性

    我使用 Cmake 和 Xcode 来生成一个 c c 项目 my project 和一些 c c 目标 一个是二进制文件 其余的是库 我的 CMakeLists txt 看起来像这样 project my project add subd
  • 在多个列表段落上循环 Word 宏会导致内存问题

    我遇到了一个相当简单的 Microsoft Word vba 宏问题 该宏旨在解决当我们从 Word 文档创建 PDF 版本时我们在列表缩进中遇到的一些问题 该宏基本上循环遍历文档中的每个列表 并且对于与列表关联的每个列表段落 它设置列表模
  • 页面必须填满整个ViewPager2(使用match_parent)

    我有一个项目布局 其中显示图像 产品名称和产品图像 我必须使用约束布局以 1 1 5 比例显示图像 但是当我加载小图像时 下面的文本不显示 下面是我的项目 XML 代码
  • 将图像拖放到网页中并使用 HTML 文件 API 自动调整图像大小

    我想创建网页 允许用户将图像拖放到页面各个部分的框中 以便他们可以打印带有图像的页面 我希望图像在放入框中时自动调整大小 我结合了一些代码http html5demos com file api http html5demos com fi
  • Git Bash for Windows 显示/期望带有正斜杠的文件路径,没有驱动器冒号

    我安装了 Git 扩展 它会自动下载并安装适用于 Windows 的 Git 当我使用 Git Bash 时 它显示文件路径为 c whatever folder 而不是 C whatever folder 如果我粘贴来自 Windows
  • 如何将 rst.FindFirst 与 rst.NoMatch 一起使用?

    我的代码除了这一行之外都有效 FindFirst DONOR CONTACT ID strTemp2 我希望我的代码检查是否存在一条记录 其中存在特定的 DONOR CONTACT ID 因为存在多个具有相同 DONOR CONTACT I
  • 性能问题:ON DUPLICATE KEY UPDATE 与 UPDATE (MySQL)

    INSERT INTO ON DUPLICATE KEY UPDATE 和 UPDATE 之间有性能差异吗 如果我知道可以更新的值 我应该使用更新还是它并不重要 它们是有区别的 The INSERT查询必须检查每一列的约束 以查看添加该行是
  • 将字符串转换为json字符串并在R中解析

    我有一个数据 其中一列为 json 字符串 reservation reasons 1592 name gt jorge value gt MX name gt Billing phone number value gt 1123 name
  • d3.js 右对齐嵌套条形图

    我正在与这个 d3 js 示例 http bl ocks org mbostock 1283663我希望将图表的整个方向更改为从右到左 我能够反转 x 轴刻度 var x d3 scale linear range width 0 以及 y
  • 在 Python 中打印不带换行符(但带空格)的列表

    我正在尝试使用打印不带换行符的列表的值sys stdout write 它工作得很好 但唯一的问题是我想将每个值与另一个值隔开 换句话说 而不是123 我想1 2 3 我在网站上寻找解决方案 但没有找到涉及列表的内容 当我添加 to sys
  • multiDexEnabled 不起作用

    我有一个相当大的android项目 该项目仍然可以编译 但是当我尝试编译测试时出现错误 Execution failed for task app dexDebugTest trouble writing output Too many m
  • Ruby 中的“if (a == b || c == b)”语句可以做得更短吗

    我有一段 Ruby 代码 如下所示 def check if a b c b execute some code b the same variable end end 这可以写成这样 def check if a c b this doe