在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
答案 0 :(得分:1)
词法解析器可能“更宽松”,因为它会忽略单个换行符和紧靠点之前的空格。它可能不允许多个换行符。这将链式语句分解为不连贯的混乱,并且在没有误报的情况下处理变得更加复杂。所有人都说......
如果你必须添加内联评论,那么对于简洁,链式的陈述来说,它可能是不合适的。