Ruby 语法:突破 'each.. do..' 块

2024-01-07

我正在开发一个红宝石 on Rails应用程序。我的问题更多是关于Ruby句法。

我有一个带有类方法的模型类self.check:

class Cars < ActiveRecord::Base
  ...
  def self.check(name)
     self.all.each do |car|
          #if result is true, break out from the each block, and return the car how to...
          result = SOME_CONDITION_MEET?(car) #not related with database
     end

     puts "outside the each block."
  end
end

我想停止/摆脱each block once the result is true(这就是打破each阻止如果car.namename范围once)并返回car从而导致true结果。如何在 Ruby 代码中进行突破?


你可以打破break关键词。例如

[1,2,3].each do |i|
  puts i
  break
end

将输出1。或者如果你想直接返回值,使用return.

由于您更新了问题,因此代码如下:

class Car < ActiveRecord::Base
  # …

  def self.check(name)
    self.all.each do |car|
      return car if some_condition_met?(car)
    end

    puts "outside the each block."
  end
end

虽然你也可以使用Array#detect or Array#any?为了这个目的。

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

Ruby 语法:突破 'each.. do..' 块 的相关文章

随机推荐

  • Django 缓存错误..即使禁用缓存

    我有一个 Django 网站 其中出现了一个奇怪的错误 在网站上 他们可以添加 出版物 这基本上与不同名称的博客文章相同 当他们修改现有帖子时 事情会变得很奇怪 他们首先在管理员中修改它 当他们访问网站时 更改不可见 就像旧版本被缓存一样
  • 是否可以隐藏系统栏

    我创建了一个启动器 以便在内部应用程序中使用它 出于某些安全原因 我想隐藏系统栏 对参数的访问和对已安装应用程序的访问的排序 但我不知道该怎么做 将使用的平板电脑未root 你能帮我吗 您无法隐藏它 但可以禁用它 但主页除外 为此 您可以将
  • R 中的网页抓取,“...当前工作目录中不存在”错误

    我正在尝试使用 XML2 包从 ESPN com 中抓取一些表格 举例来说 我想将第 7 周的梦幻四分卫排名抓取到 R 中 其 URL 为 http www espn com fantasy football story page 16ra
  • 如果我推送到已删除的分支会发生什么?

    我有一个 git 分支 被gitlab合并删除了 现在 发现了一个错误 我想继续在这个分支上工作 我重命名了它 但它仍然跟踪已删除的分支 它不知道 gitlab 删除了该分支 现在我很好奇 在这种情况下我该怎么办 如果我按原样推进会发生什么
  • 在Java中编码base64并在C#中解码

    我必须将文件发送到我的 Web 服务 但 Web 服务假定该文件 字节数组 为 base64Binary 在编码之前 byteArrayFile 作为常规文件保存在磁盘上 我这样做只是为了测试 因此 在我的 Web 服务 Java 客户端中
  • Bootstrap 中每行超过 12 列

    我将在 bootstrap 3 2 0 中查看每行 12 列 并根据 bootstrap 和这个帖子 https stackoverflow com questions 23535499 bootstrap what will happen
  • 在 HTML 页面“到达”底部之前滚动它

    我有这个聊天话题 它当前所做的是 当它到达页面底部时 它会向上滚动 以便它始终位于页面底部 问题是 正如您在图像中看到的 它在到达页面底部之前隐藏在表单后面 因此 我需要重新定义页面底部的内容 我努力了 function scroll wi
  • scoped_session 中跨进程边界

    我正在使用 SQLAlchemy 和多处理 我还使用scoped session 因为它避免共享同一个会话 但我发现了一个错误及其解决方案 但我不明白为什么会发生这种情况 你可以在下面看到我的代码 db py engine create e
  • 使用 jira-python 进行基本身份验证

    我是 Python 新手 jira python 库新手 网络编程新手 尽管我在应用程序和集成编程以及数据库查询方面确实有相当多的经验 尽管已经有一段时间了 使用Python 2 7和请求1 0 3 我正在尝试使用这个库 http jira
  • 如何动态设置文本到TextView?

    我想在活动开始时显示连接的 ssid 和 IP 地址 它包含一个图像视图 用于标题 因为我没有使用操作栏 和 4 个文本视图 ssid 标签 ssid 值 ipaddr 标签和 ipaddr 值 我已经测试了获取 ssid 和 ipaddr
  • 为什么这个 Django 测试能够通过?

    单独调用send mail函数会因为主题中的换行符而导致BadHeaderError异常 我预计这个 test newline causes exception 也会失败 但事实并非如此 这是 Django 1 3 中的内容 有任何想法吗
  • 在 Typescript 的模块内使用 get/set 创建变量

    我想在模块内创建一个具有获取 设置属性的变量 我看到了一些在类中创建 get set 属性的工作示例 如下所示 class MyClass private view get View return this view set View va
  • 使用 jQuery 1.5 以 jsonp 形式发送请求,将响应解释为文本

    简短的问题 有没有办法向服务器发出 jsonp 请求 捕获请求 但不将其解析为 javascript 我在 jQuery 1 5 中使用 dataType jsonp text 但它不起作用 我正在尝试使用 jsonp 通过 AJAX 访问
  • 根据登录用户在运行时更改数据库架构

    我已经阅读了许多有关动态数据源路由的问题和答案 并使用以下方法实现了一个解决方案AbstractRoutingDataSource和另一个 见下文 这很好 但需要所有数据源的硬编码属性 随着使用该应用程序的用户数量的增加 这不再是合适的路由
  • 如何使用 VS2015 Preview 运行 xUnit 单元测试?

    我通过扩展管理器添加了 xUnit net runner for Visual Studio v0 99 8 但是当我打开 测试资源管理器 窗口时 它似乎没有拾取任何单元测试 此外 Resharper 9 EAP 是唯一支持 VS2015
  • R中将线性方程转换为矩阵形式的函数?

    我想知道 R 是否存在任何包或其他预构建的解决方案 能够将线性方程组转换为矩阵形式 例如 通过高斯赛德尔算法 https en wikipedia org wiki Gauss E2 80 93Seidel method 类似于equati
  • 如何将@mixin从一个sass文件包含到不同文件夹中的另一个sass文件

    我将一个 SASS 文件中的 mixin 包含到另一个文件中 但 ionic 出现错误serve命令 Error Sass Error Invalid CSS after include expected identifier was th
  • 找到给定图像的 Dockerfile

    我正在一台 Linux 机器上工作 我大约 3 4 周前构建了一个 Docker 镜像 但我不记得 Dockerfile 位于哪里 查找 Dockerfile 的最佳方式是什么 是否有可能以某种方式在给定图像的情况下获取其位置 我尝试使用
  • 他们为什么使用; Java/C++ 中的结束语句

    他们应该不会用过吧 结束声明 他们可以使用 gt 来调用方法 这只是一个疏忽吗 还是这里面有更深层次的原因 Java 选择分号是为了拥有与 C 和 C 类似的语法 C 选择它的语法与 C 类似 我猜 C 选择分号是因为 B ALGOL 和
  • Ruby 语法:突破 'each.. do..' 块

    我正在开发一个红宝石 on Rails应用程序 我的问题更多是关于Ruby句法 我有一个带有类方法的模型类self check class Cars lt ActiveRecord Base def self check name self