评论限制

时间:2011-04-16 14:05:23

标签: ruby comments newline indentation ruby-1.9

在ruby 1.9中,放宽了一条线的结束条件,以便我们现在可以开始一个显示方法调用的句点的行。当我们将链式和非链式方法混合在一起时,这很方便,并且想要显示下一个非链式方法的开始位置。如果没有这个新功能,我们可以做的最好的就是使用缩进:

method1(args1).
  method2(args2).
  method3(args3)
method4(args4).
  method5(args5).
  method6(args6)

或插入一个空行。但这很不方便,因为我们必须注意缩进,同时,不要忘记在每个方法调用之后设置一个句点,但链中的最后一个。因此,我创建了许多错误,要么有额外的或缺少一段时间。通过新功能,我们可以做得更好:

method1(args1)
.method2(args2)
.method3(args3)
method4(args4)
.method5(args5)
.method6(args6)

其中视觉效果为缩进项目符号。

问题在于,当您想要在以句点开头的行之前插入注释时,会返回错误。

method1(args1)
# method2 does blah blah
.method2(args2)
# method3 then does foo foo
.method3(args3)
method4(args4)
# method5 does blah blah
.method5(args5)
# method6 then does bar bar
.method6(args6)

# => error

method1(args1)
 # method2 does blah blah
.method2(args2)
 # method3 then does foo foo
.method3(args3)
method4(args4)
 # method5 does blah blah
.method5(args5)
 # method6 then does bar bar
.method6(args6)

# => error

似乎"#...."不是简单地删除,而是以某种方式与代码交互。怎么了?这里的确切限制是什么?如果期间在一条线的末尾,则不会发生这种情况。

method1(args1).
  # method2 does blah blah
  method2(args2).
  # method3 then does foo foo
  method3(args3)
method4(args4).
  # method5 does blah blah
  method5(args5).
  # method6 then does bar bar
  method6(args6)

  # => no error

1 个答案:

答案 0 :(得分:1)

词法解析器可能“更宽松”,因为它会忽略单个换行符和紧靠点之前的空格。它可能不允许多个换行符。这将链式语句分解为不连贯的混乱,并且在没有误报的情况下处理变得更加复杂。所有人都说......

如果你必须添加内联评论,那么对于简洁,链式的陈述来说,它可能是不合适的。