我正在寻找一种类似于C(++)的#if 0
的方式,可以注释掉整个Scala源代码块,以便保留一段时间的实验性或过期的代码。
我尝试了几种替代方案,并想听听您使用的方式,是否有更好的解决方案?
// Simply block-marking N lines by '//' is one way...
// <tags> """ anything
我使用的编辑器使这很容易,但它并不是真正的事情。它很容易与实际的单行注释混淆。
然后我发现有本地的XML支持,所以:
<!--
... did not work
-->
在XML中进行包装是可行的,除非在块内部有
<tags>
:class none { val a= <ignore>
...
cannot have //<tags> <here> (not even in end-of-line comments!)
</ignore> }
对于多行字符串,使用相同的方式似乎是最好的选择,但是为了让编译器满意(在Scala中不太时尚),需要大量的样板代码(如果您在类或对象内部执行此操作,则会减少一些):
object none { val ignore= """ This seems like
...
<truly> <anything goes> but three "'s of course
""" }
这个做法可能是“正确”的方式:
/***
/*
... works but not properly syntax highlighed in SubEthaEdit (or StackOverflow)
*/
***/
但是这只匹配/*
和*/
,而不是例如/***
到***/
。 这意味着块内的注释需要平衡。 而且-当前SubEthaEdit的Scala语法突出显示模式在此方面失败了。
作为比较,Lua具有匹配--[==[
和]==]
等内容。 我觉得我被宠坏了?
那么-我是否忽略了一些有用的技巧?
/*** /* ... */ ***/
嵌套风格的块。 - om-nom-nom