2

块注释的确切规范是什么?=begin第一行和最后一行必须完全以and开头,这似乎是真的=end。但除此之外,还有一点不明确。一些描述说=begin并且=end必须是相应行的唯一内容,但这似乎不是真的。运行 Ruby 1.9.3 MRI,我得到以下结果。

添加空白字符似乎仍然有效:

=begin \t\t   \t
  This is not a Ruby command and should raise an exception if read.
=end \t\t\t   \t\t\t\t
# => no problem

此外,似乎我可以在一个或多个空格字符后添加任意字符串(不包括“\n”),仍然可以:

=begin \t\t   \tblah blah blah
  This is not a Ruby command and should raise an exception if read.
=end \t\t\t   \t\t\t\tThis is some scribble
# => no problem

=begin我可以在块注释的中间添加一行:

=begin
  This is not a Ruby command and should raise an exception if read.
=begin
  So as this one.
=end
# => no problem

但不是有资格作为评论最后一行的行:

=begin
  This is not a Ruby command and should raise an exception if read.
=end blah blah
  So as this one.
=end
# => error

是这个规范,还是依赖于实现的行为?为清楚起见,有人可以用正则表达式描述 Ruby 块注释语法的确切规范吗?

4

1 回答 1

3

Ruby 编程语言,第 26 页:“Ruby 支持另一种风格的多行注释,称为嵌入式文档。(...)

出现在评论之后=begin=end作为评论一部分的任何文本也会被忽略,但额外的文本必须与=beginand分隔=end至少一个空格。(...)

嵌入式文档通常由在 Ruby 源代码上运行的某些后处理工具使用,并且通常=begin带有一个标识符,该标识符指示注释针对的是哪个工具。”

另一种使用方式:

=begin Please fix this!
non working code #this is a comment line
=end non working code

#=begin Please fix this!
non working code #now this line gets run
#=end non working code
于 2012-10-08T13:02:44.657 回答