ruby - 使用大括号是否违反 "Ruby way"?

标签 ruby forms builder curly-braces

我已经使用 Ruby 大约两周了,而且我的编程时间也不算太长,但我是从 C 风格的背景(C++、C# 等)开始学习这门语言的。无论如何 - 我的一个好 friend 兼导师正在看我前几天写的一些 Ruby,他告诉我,如果他再次发现我在 Ruby 中使用花括号,他会打我。

好吧,我昨天才通过 this About.com article 了解到有关 Builder 的信息,并且他们发布的示例使用花括号。是否有不同的方法来执行此操作,或者您是否必须在 Builder 中使用花括号?

这似乎是一个小问题,但我是 Ruby 的新手,我不想让自己养成任何坏习惯。大家怎么看?

最佳答案

虽然有些人认为“单线用大括号,多线用 do-end”,但我个人认为以下规则最合乎逻辑:

  • 当您的 block 有副作用时使用do-end(通常使用each 和相关方法)和
  • 当您的 block 没有副作用时使用大括号(mapinject 等)

这个逻辑与 Matt 所写的方法链问题相吻合。

这种方法的一个好处是,它会让您在每次编写 block 时都考虑副作用,它们非常重要,尽管有时会被没有函数式编程背景的编码人员忽视。

不涉及副作用术语的另一种表达方式是:

  • 执行
  • 的 block 使用do-end
  • 返回
  • 的 block 使用{}

这里有几篇文章提供了更多信息:

http://onestepback.org/index.cgi/Tech/Ruby/BraceVsDoEnd.rdoc

http://talklikeaduck.denhaven2.com/2007/10/02/ruby-blocks-do-or-brace

关于ruby - 使用大括号是否违反 "Ruby way"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5170323/

相关文章:

ruby-on-rails - 以编程方式列出所有 cucumber 场景?

java - Spring MVC 表单提交 - 动态更改表单捕获对象

ruby-on-rails - 在任何源中都找不到 builder-2.1.2

php - 使用 PHP 从数据库生成 HTML 表单

java - 如何使用具有不可变结果和扩展接口(interface)的流畅接口(interface)来实现构建器模式?

javascript - 高级搜索功能 - 为最终用户提供查询构建器

javascript - 使用 Cucumber/Capybara 测试执行 JavaScript

javascript - 运行 rake asset 预编译后,在非函数中未定义

ruby-on-rails - ruby on rails 中的 Rspec 测试,无法加载此类文件 webmock/rspec

javascript - 模态表单上的 jQuery Submit() vc click()