【发布时间】:2012-11-29 17:10:06
【问题描述】:
我正在寻找一种类似于 C(++) #if 0 的方式来注释掉整段 Scala 源代码,以便暂时保留实验性或过期代码。
我尝试了几种替代方法,想听听您使用的是什么,以及您是否想出了更好的方法?
// Simply block-marking N lines by '//' is one way...
// <tags> """ anything
我的编辑器让这一切变得简单,但这并不是真正的 The Thing。它很容易与实际的单行 cmets 混合。
然后我发现有原生 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)
*/
***/
..但仅匹配 /* 和 */,而不是 /*** 到 ***/。这意味着块内的 cmets 需要平衡。并且 - SubEthaEdit 当前的 Scala 语法高亮模式在这方面失败了。
作为比较,Lua 与 --[==[ 匹配 ]==] 等等。我觉得我被宠坏了?
那么 - 我正在监督一些有用的技巧吗?
【问题讨论】:
-
我不明白你为什么需要支持
/*** /* ... */ ***/嵌套样式块 -
最好只删除代码,如果您想在某个时候恢复它,请使用您的版本控制系统(或 IDE 中的本地历史记录)。一旦你熟悉它,它就一样快,而且更干净。注释掉是随着时间的推移积累垃圾的好方法,即使是出于好意,它也很少会被清理干净。
-
您能否进一步说明您的用例?您说“暂时保留实验性或过期代码”。但尚不清楚为什么仅使用 /* */ 还不够好。正如其他人指出的那样,您希望避免保留大量代码不被编译,因为您将遇到代码腐烂问题。因此,您可能需要考虑将当前未使用但将来可能需要的代码分成文件/模块/库。
-
@om-nom-nom:我想,我真正想要的只是语法高亮与嵌套的 /*..*/ 块一起工作。然后我可以简单地使用多个星号作为约定。对其他人来说:用例真的不是大块,因为 Scala 无论如何都非常紧凑。这是一种工作方式,即我经常做 /*** REMOVE? ... **/ 块用于我可能想再看几天的方法或类。是的,版本控制是下一个阶段。当我开始这张票时,我认为嵌套的 /..*/ 在编译器中不起作用,因为它们的语法突出显示失败。感谢您的意见。