【发布时间】:2011-08-06 22:02:24
【问题描述】:
在 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)
句点在视觉上用作缩进的项目符号。
问题是,当您想在以句点开头的行之前插入 cmets 时,它会返回错误。
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
【问题讨论】:
标签: ruby comments newline indentation ruby-1.9