我已经使用
Ruby大约两个星期了,而且我的编程时间太长了,但是我从C风格的背景(C,C#等)开始学习语言.无论如何 – 我的一个好朋友和导师正在看着我前几天写过的一些Ruby,他告诉我,如果他再次使用Ruby中的花括号来抓我,他会打我.
好吧,我刚刚通过this About.com article找到了关于Builder的内容,并且他们发布的示例使用了大括号.有没有不同的方法来做到这一点,还是你必须使用Builder的花括号?
这似乎是一个小问题,但我是Ruby的新手,我不想让自己养成任何坏习惯.你们有什么感想?
解决方法
虽然有些人选择“支持单行,支持多行”,我个人认为以下规则最合乎逻辑:
>当你的块有副作用时(通常使用每种方法和相关方法)和使用do-end
>当你的块没有副作用时使用大括号(地图,注入和类似)
这个逻辑很适合Matt写的方法链问题.
这种方法的一个好处是,它会让你在每次编写块时都考虑副作用,并且它们非常重要,尽管有时会被没有函数编程背景的编码器忽略.
如果不涉及副作用术语,另外一种方法是:
>对执行的块使用do-end
>对返回的块使用{和}
这里有几篇文章有更多信息:
http://onestepback.org/index.cgi/Tech/Ruby/BraceVsDoEnd.rdoc
http://talklikeaduck.denhaven2.com/2007/10/02/ruby-blocks-do-or-brace