在thrice方法的Ruby中,以下两个实现之间的行为差异是什么?
module WithYield
def self.thrice
3.times { yield } # yield to the implicit block argument
end
end
module WithProcCall
def self.thrice(&block) # & converts implicit block to an explicit, named Proc
3.times { block.call } # invoke Proc#call
end
end
WithYield::thrice { puts "Hello world" }
WithProcCall::thrice { puts "Hello world" }
Run Code Online (Sandbox Code Playgroud)
通过"行为差异",我包括错误处理,性能,工具支持等.
我试图理解html.erb文件是如何工作的,我对render和yield命令有点困惑,因为它们似乎都是通过替换其他html.erb文件中的代码来使文件管理器更清晰和更简单的方法.有人可以向我解释渲染和产量之间的区别吗?
编程新手,但我已经完成了一些整洁的东西。但考虑到我的非传统方法,我有时会对涉及大量假设的“传统”教义感到沮丧和困惑。
所以我一直在学习 rails,并且喜欢它的结构,但是一些术语让我感到困惑,我试图理解它,但无法理解它。很多人一直在向我推荐关于布局和渲染的RailsGuides,但我并不完全理解它,并认为它缺乏整体 Rails 结构的更广泛背景。
那么,您是否知道任何描述整体流程和术语的 Rails 解释站点/文档/视频/书籍,更具体地说,是解决布局、渲染、部分和视图如何工作的站点/文档/视频/书籍,相对于 Rails 处理?
规格:
当试图将它们相互联系起来时,术语会变得混乱。以PJAX RailsCast 为例,Bates 明确表明它们是布局和模板之间的差异。当我试图通过这个 SO question来实现这一点时,我迷失在文件及其功能的传统结构和命名中(不是每个人,只是那些在命名中似乎超载的)。
就拿applicaiton.html.erb中的文件views/layouts。它的文件路径位置告诉我,这是一个“布局”,但关于什么_navigation.html.erb和_left.html.erb和_right.html.erb等....这也设在了views/layouts,因为所有的网页分享这些时,都在同一水平application.html.erb ,但这些都在前_underscores在文件名中,因此 Rails 知道这些是“部分”,但它们也位于views文件夹中,并且在layout文件夹中。那么它的名字是什么?
上面的问题使我不明白某人在说什么,因为我也可能没有相应地构建文件。范围问题(据我所知,当您调用render 'action'或render 'file'等等时,rails 可以找到另一个控制器视图和操作)会影响使用rendervs content_for/ yield。看看我在这里的 SO 问题,在 Geoff 的回答中,在我问“所以不可能使用其他观点的 yield ?”时的评论中,他的回答是“这当然不是意图”。
所以回到最初的问题,我不认为这些是相互关联的。我对制作一个健壮的应用程序很感兴趣,我了解如何使用其他较小的框架来完成它,但我需要在更高的层次上了解 rails 如何使用布局、部分、模板和视图,以及应如何相应地构建文件。 …