【发布时间】:2014-03-08 00:24:02
【问题描述】:
我一直在 Ruby 中编写相同模式的代码,这似乎会受益于“do”风格的代码,但我不确定如何编写该方法。
我一直在做这种代码模式,它以相同的代码行开始和结束......
x.increment!(:step_count) # same each time
# ...then some different code each
x.update_column(:step_description, "blerg message") # same each time
我觉得它会从“做”一些看起来像这样的事情中受益......
update_steps "blerg message" do
# ...then some different code each
end
然后每次在'do'里面执行通用代码。
我将如何制作一种可以使用“do”的方法。
谢谢!
编辑:我认为不要关闭它很重要,因为我不知道要搜索“阻止”或“屈服”。可能不知道这些术语的人最终可能会搜索“do”。
【问题讨论】:
-
它被称为“块”,
yield关键字是有效成分。这应该会有所帮助:Blocks and Yields in Ruby -
"因为我不知道要搜索 'block' 还是 'yield'" 关闭不会变成删除。相反,您建议其他人可能会搜索“do”,而这正是关闭它的原因。这样做会将其与具有正确术语的问题联系起来,并且已经有几个完整且高度赞成的答案。在这种情况下,关闭并不是一件坏事,特别是因为您仍然可以获得与您的用例相关的答案,但它会将未来的搜索者引导到其他相关答案。
标签: ruby-on-rails ruby yield