解释 Ruby on Rails 中的迭代器语法

2023-12-02

我开始学习 Ruby on Rails,发现自己对语法感到困惑,所以我必须阅读一些 Ruby 语法。我从中学到了语法http://www.cs.auckland.ac.nz/references/ruby/doc_bundle/Manual/man-1.4/syntax.html:

method_call do [`|' expr...`|'] expr...end

他们称之为迭代器。我了解迭代器通过循环运行,但我不明白我应该如何准确地阅读此内容或此语法中发生的情况。我经常在 RoR 的截屏视频中看到这种情况,这些话很有道理,但我实际上不知道发生了什么。有人可以向我解释一下吗?

编辑:示例

respond_to do |format|
    format.json
    format.xml { render :xml => @posts }
end

方法可以采用称为“块”的构造。这些是传递到方法中的匿名方法。

另一种语法是:

method_call { |var| do_something(var) }

基本上,您是说对于迭代中的每个项目,将其命名为“var”并对该项目执行某些操作。该方法只是调用您传入的块,因为它“产生”了项目。

这有帮助吗?

edit:在您的示例中,您以一种有趣的方式使用迭代器模式......可能只传递一个format对象到你的块中,这样你就可以告诉它要处理哪些格式,以及当你看到它时要做什么。

换句话说,他们正在使用该模式来创建某种 DSL,让您可以配置响应内容。

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

解释 Ruby on Rails 中的迭代器语法 的相关文章

随机推荐

  • 唤醒时自定义锁屏延迟

    我正在尝试制作一个自定义锁屏应用程序 但我不确定我是否以正确的方式进行操作 我有一个广播接收器 可以监听屏幕何时打开并开始锁定屏幕活动 该接收器在服务内注册 这也会禁用默认锁定屏幕 问题是 屏幕打开和锁定屏幕活动显示之间存在轻微的延迟 我该
  • 无权为此项目使用 Google Cloud Datastore

    截至今天 我无法从新的 App Engine 管理控制台查询我自己的数据存储区 我被数据存储错误 您无权将此项目使用 Google Cloud Datastore 所阻止 我是该项目的所有者 我尝试过其他 所有者 帐户 但遇到了相同的错误
  • 从 React Components 生成 PDF 文件

    我一直在构建一个投票应用程序 人们能够创建民意调查并获取有关他们提出的问题的数据 我想添加功能让用户以 PDF 形式下载结果 例如 我有两个组件负责抓取问题和数据
  • Netbeans 企业应用程序项目中没有 web.xml

    我正在使用 netbeans 7 2 1 和 glassfish 服务器 3 1 我在netbeans中创建了企业应用程序项目 并将JSF框架添加到项目的war部分 Netbeans 没有创建任何 web xml 和 glassfish w
  • Android 屏幕关闭时的 TYPE_STEP_DETECTOR

    您好 我正在开发一个计步器应用程序 该应用程序使用 Android KitKat 的 TYPE STEP DETECTOR 传感器类型 一切似乎都工作正常 直到我关闭屏幕或锁定手机 我发现屏幕关闭时它不会触发事件 我知道 TYPE STEP
  • Ruby Sequel:查询返回的数组作为 String 对象返回,而不是 Array 对象

    我正在使用pg arrayRuby Sequel 的扩展 当我选择 Postgresql 数组的列时 结果是 Ruby 中的字符串 我如何让它成为一个 Ruby 数组 以便我可以在上面使用 each 之类的东西 CaseTypeCatego
  • rmarkdown 中的 python(网状)

    我正在尝试在 rmarkdown 文档中添加 python 块 我安装了包 reticulate 然后这是我的文档 r message FALSE warning FALSE echo FALSE library reticulate py
  • 使用 .net 和 c# 从任务栏中删除应用程序图标

    我试图在任务栏上显示图标 我就是这样做的 ResourceManager resManager new ResourceManager TestAgent Properties Resources GetType Module Assemb
  • Mysql:如何在 LOAD DATA INFILE 查询中使用 RTRIM?

    在我的代码中 我有一个如下所示的查询 load query LOAD DATA LOCAL INFILE file INTO TABLE table FIELDS TERMINATED BY ENCLOSED BY 以下是我尝试加载的文件中
  • AngularJS中ng-repeat和collection-repeat之间的区别?

    我对 ng repeat 和 collection repeat 有一点困惑 NG 重复
  • 在 Chrome 中内联 javascript 重定向之前中断 javascript

    我正在查看一个具有内联 JavaScript 重定向的页面 window location anotherpage 我想在 Chrome 中加载页面 但禁用了重定向行 这样我就可以使用该页面而不会被重定向 这是我尝试过的 开发者工具 gt
  • 使用依赖注入框架时的抽象工厂

    我想知道在使用 DI 框架时如何正确使用抽象工厂 并且该工厂中的参数之一是应该由 DI 框架处理的依赖项 我不确定是否让我的抽象工厂完全省略参数 然后使用我的 DI 容器来连接它 或者是否应该将依赖项传递给对象 例如 我有一个 TcpSer
  • 两个片段之间的 onItemClickListener

    我对 android 很陌生 我已经尝试过 但无法找出我缺少的东西 我正在使用两个片段来显示列表 现在 当用户单击第一个列表项时 我想更改第二个片段中的列表数据 默认情况下 将选择零位置索引以在第二个列表中显示数据 我正在使用自定义数组适配
  • 如果第二个字段长于 7 个字符,则 awk 或 perl 单行打印行

    我有一个1000行的文件 每行有2个单词 用空格分隔 仅当最后一个单词长度大于 7 个字符时 如何打印每一行 我可以使用 awk RLENGTH 吗 perl 有没有简单的方法 OP 调用时使用 awk 的 RLENGTHmatch 功能
  • 如何在 Windows Phone 8 中解压缩文件

    是否可以在 Windows Phone 8 上的应用程序上解压缩文件 大多数库使用 Windows Phone 7 但不使用 Windows Phone 8 Even System IO Compression ZipFile不在这里 将此
  • 如何在android中使用SQLite数据库生成不同类型的报告?

    我正在开发一个Android应用程序 我需要在其中生成各种格式的不同类型的报告 我想生成 PDF XLS DOC 和文本文件格式的报告 所有数据都存储在SQLite数据库中 请指导我如何在android中实现它 您好 您可以使用以下代码生成
  • Cakephp 2.0 行/记录级 Acl

    我正在摆弄 cakephp 2 0 的访问列表 到目前为止 我按照文档创建了一个非常简单的示例 我已经建立了一个用户表和最重要的功能 如索引 添加 登录ecc 并且与组表相关 每个用户属于一个组 我还创建了一个 房屋 表 其中包含不同的内容
  • twilio 捕获错误不起作用

    我正在我的 Laravel 5 应用程序中实现 twilio 要在我使用的框架中使用它aloha laravel twilio一体化 发送有效请求测试凭证工作正常 当我想要实施时遇到问题错误处理 由于某种原因 catch 没有收到错误 这会
  • 我应该使用 HTML::Parser 还是 XML::Parser 来提取和替换文本? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我希望能够提取所有纯文本并从 HTML XHTML 文档中分析 修改 然后根据需要进行替换 我可以使用以下方法来做到这一点吗HTML 解析器或者应该是XML 解析器 有没有人知道有什
  • 解释 Ruby on Rails 中的迭代器语法

    我开始学习 Ruby on Rails 发现自己对语法感到困惑 所以我必须阅读一些 Ruby 语法 我从中学到了语法http www cs auckland ac nz references ruby doc bundle Manual m