在Scala中注释掉部分代码

aka*_*ppi 8 comments scala

我正在寻找一种类似C(++)#if 0的方法,能够注释掉整个Scala源代码,以便暂时保留实验或过期代码.

我试了几个替代品,想听听你用的是什么,如果你想出更好的东西?

// Simply block-marking N lines by '//' is one way... 
//  <tags> """ anything
Run Code Online (Sandbox Code Playgroud)

我的编辑器让这很容易,但事实并非如此.它很容易与实际的单行注释混合在一起.

然后我想到了原生的XML支持,所以:

<!-- 
  ... did not work
-->
Run Code Online (Sandbox Code Playgroud)

包装在XML中有效,除非你<tags>在块中:

class none { val a= <ignore>
  ...
  cannot have //<tags> <here> (not even in end-of-line comments!)
</ignore> }
Run Code Online (Sandbox Code Playgroud)

对于多行字符串来说,这似乎是最好的,但是有很多样板(在Scala中不是时髦的)来取悦编译器(如果你在一个类或一个对象中这样做,那就少了):

object none { val ignore= """ This seems like
  ...
  <truly> <anything goes> but three "'s of course
""" }
Run Code Online (Sandbox Code Playgroud)

"正确"的方法可能是:

/***
  /*
  ... works but not properly syntax highlighed in SubEthaEdit (or StackOverflow)
  */
***/
Run Code Online (Sandbox Code Playgroud)

..但相匹配的/**/唯一的,即不/******/.这意味着块内的注释需要平衡.而且 - SubEthaEdit的当前Scala语法突出显示模式在此失败了.

作为比较,Lua具有--[==[匹配]==]等等.我想我被宠坏了?

那么 - 我正在监督一些有用的技巧吗?

Bri*_*new 5

为什么不直接使用您的源代码控制机制?保持代码分开,将其作为单独的文件检查并忘记它.我不希望我的日常代码库充满了这种东西.

但请注意,如果您不经常使用此代码(例如在自动化测试等中),它将遭受代码腐烂.一旦你注释掉或以其他方式搁置这些东西,依赖关系将继​​续前进,你会发现它不久就不会链接现有的代码库.