Multi-Line Comments in Ruby?
如何在Ruby中评论多行?
- 如果有人在puppet .pp清单中查找多行注释(基于类似于Ruby的语法),您可以使用c样式的块注释/**/。
- 很不幸,Ruby中的多行注释看起来非常像一块代码。考虑到这个问题(以及公认的答案)的优点,研究Ruby语法的人应该清楚地思考一下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| #!/usr/bin/env ruby
=begin
Every body mentioned this way
to have multiline comments.
The =begin and =end must be at the beginning of the line or
it will be a syntax error.
=end
puts"Hello world!"
<<-DOC
Also, you could create a docstring.
which...
DOC
puts"Hello world!"
"..is kinda ugly and creates
a String instance, but I know one guy
with a Smalltalk background, who
does this."
puts"Hello world!"
##
# most
# people
# do
# this
__END__
But all forgot there is another option.
Only at the end of a file, of course. |
- 这就是它的外观(截图),否则它的硬解释如何将上述意见的样子。点击放大:
- 我真的更喜欢使用#而不是全部,主要是因为它在视觉上比=begin/=end更好地分隔注释行,或者使用here to方法。而且,工作不错。
- 对于我来说,在Ruby1.9.3P194中,使用上面所示的Heredoc样式给出了warning: possibly useless use of a literal in void context。
- 正常的字符串也是如此。
- 有趣的是,这个答案使得语法中的一些缺陷更加明显。
- 不要忘记,=begin和=end前面不能有任何空白。
- 在方法中不能使用=begin=end
- 它是:gist.github.com/rkh/e0f5ce0afd1b33e1cb6c
- 如果你在一个能正确突出显示RDOC注释的编辑器中阅读Ruby代码,那么它们会很突出,而且你的注释也不会因为每行开头都有一个""而变得杂乱无章。不喜欢什么?Otoh,通过std库的扫描显示两个点击率,在我的宝石中有一个小的点击率。Otoh,几乎所有Perl代码都使用pod。可能是因为用PerlPod注释生成HTML和手册页的工具比Ruby的要远得多。
- 我更喜欢使用,但大多数时候我使用=开始…=结束,因为我太懒了,无法键入所有这些或学习如何在vim中执行块注释。
- 需要注意的是,在上面的示例代码中,在生成文档时,RDOC只接收第一个=begin...=end和最后一个使用#的块。
- Heredoc格式<<-DOC将插入,因此您不能轻易地在内部使用#{}变量。如果你试图使用<<-'DOC'(它基本上告诉Heredoc不要执行插值),它很可能会破坏你的语法突出显示。
1 2 3 4 5 6
| =begin
My
multiline
comment
here
=end |
- 当然,你可以这样做。它起作用了。这是非常罕见的。我觉得很难看。也许我被困在自己的道路上了?
- 我发现,如果在=开始或=结束之前包含一个选项卡,则注释将不起作用。=开始和=结束每一行都需要在每一行的开始处写入。
- 不是只有你一个人@davidjames。我个人选择了让我的编辑把它们都评论掉。Cmd+/或Alt+/是大多数人的习惯。
- @戴维杰姆斯,你会怎么做?A型#和每一行前的空格?这是很多击键,特别是如果我开始添加换行符。
尽管存在=begin)在正常和=end,和更多的评论是正确的方式来使用的在线#每线。如果你读任何的Ruby库的源代码,你会看到,这是一对多的方式是做在网上几乎所有的案件。
- 您可能会得到关于语句中"更正确"部分的参数,因为它们都是有效的。我更喜欢使用#,因为它更明显。在注释代码时,很重要的一点是要让它变得明显,这就是发生的事情。如果您在使用=begin/=end的编辑器中查看代码而没有代码着色的好处,那么很难找出代码被忽略的原因。
- 当然,写评论有很多"有效"的方法。让我们在这里实事求是。如果你真的写了Ruby并且读了别人写的东西,你应该使用#注释。(我搞不明白为什么会有两次落选。我想堆栈溢出社区有时会出错!)
- 3 == three,其中def three; 1 + 1 + 1 end。因此两者都是有效的。谁在乎?使用3!
- @虽然这是真的,但通常情况下,您唯一缺少语法突出显示的时间(在我的经验中)是在生产服务器上使用vi。在这种情况下,无论如何,您可能不应该在那里进行开发。
- @你的例子太荒谬了,因为它更冗长。在每一行上放置哈希对于更长的注释来说更为冗长。如果有人认为"dev/urandom"这个短语在这里被用于非阻塞密码发音prng。不要碰这段代码——这是魔法"是我写Ruby的尝试,我认为他们的困惑更多地来自于对他们的无知,而不是对我的不清楚。这并不是说你的观点总是无效的——这只是在评论代码时的一个好观点。但如果你的评论只是…评论…无论哪种方式都应该是明确的。
- @帕提安肖特,即使在我的生产主机上,我也定义了我的标准~/.vim。我的一些生产主机是为用户开发的。
- @我感到困惑、饥饿和疲惫。其中一种情绪就是对你的评论的回应。VIM中的默认突出显示通常工作得很好。什么时候没有突出显示?编辑:很困惑。我吃了一点,但我猜中了。
- 在终端不匹配的ssh会话中,没有使用剥离的vim突出显示默认值,或者在vim不了解文件类型的情况下,尤其是在过时的主机上。在我帮助管理的任何机器上,我的第一个任务都是将VIM从源代码更新到最新的完整版本,因为我不能忍受剥离的VIM,但我使用的一些机器我无法管理。
- 这实际上不是对他的问题的回答,因此是落选。
1 2 3 4 5 6 7 8 9
| #!/usr/bin/env ruby
=begin
Between =begin and =end, any number
of lines may be written. All of these
lines are ignored by the Ruby interpreter.
=end
puts"Hello world!" |
- +因为我不知道嵌套是Ruby多行评论中的一件事。
- @帕提安肖特-这不是一件事-=begin和=end如果不是在一行的开头,将被忽略。筑巢似乎不可能。
- 在注释中嵌套注释将导致单个注释或语法错误,无法在没有注释的地方结束注释。/*I am a
#nested
comment, which really serves no purpose*//*I am bound /*to*/ FAIL!*/如果您在多行注释中有单行注释和代码,例如您不希望人们使用的带有文档的函数,但您也不希望从文件中删除它,那么这是有意义的。
使用方:
1 2 3 4 5 6 7
| =begin
This
is
a
comment
block
=end |
或
1 2 3 4 5
| # This
# is
# a
# comment
# block |
二是目前唯一支持的RDoc的,这是很好的理由使用这些我只想。
1 2 3
| =begin
(some code here)
=end |
和
1 2 3
| # This code
# on multiple lines
# is commented out |
都是正确的。优势的第一类型的评论是editability &mdash;它的特点是更容易出错,因为fewer到取消。优势的第二类型的评论是:代码阅读readability &mdash;线对线,它的一个特别的多,更容易告诉commented线已经出来了。你的呼叫,但想起谁是跟着你和它是如何容易阅读和维护他们。
- IMO,=begin和=end并没有从视觉上传达出两者之间是一种评论…例如,Clojure使用(comment :whatever),Leads表示它的含义:stackoverflow.com/questions/1191628/block comments in clojur&zwnj;&8203;e
- 在爪哇、C和C++中也不做"/*"和"*/"。与Ruby语法一样,可能会在这两个字符之间注释掉大量的代码块,并且了解语言基础的每个人都知道它们的含义。
- 语法着色(例如在vim中)显示第一个类型是注释。在这种情况下,第一种类型没有缺点。
这里是一个例子:
1 2 3 4 5 6 7 8
| =begin
print"Give me a number:"
number = gets.chomp.to_f
total = number * 10
puts "The total value is : #{total}"
=end |
一切都发生在你和=end=begin将如何处理许多的评论,无论它包含的代码之间的线。
注意:请确保有没有空间之间的=和begin:
=begin
comment line 1
comment line 2
=end
确保=和=端开始,第一件事是在线线(空间)
有人在寻找案例一路评论多线在Ruby on Rails的HTML模板,可能是有问题的开始端(= =),例如:
1 2 3 4 5 6 7 8
| <%
=begin
%>
... multiple HTML lines to comment out
<%= image_tag("image.jpg") %>
<%
=end
%> |
将失败,因为在_ % >关闭标签的形象。
在这个案例,也许它是,这是否是一arguable commenting缩小或不,但我更喜欢简单的undesired到第enclose带有一块:"if false"
1 2 3 4
| <% if false %>
... multiple HTML lines to comment out
<%= image_tag("image.jpg") %>
<% end %> |
这将工作。