9

#if 0実験的なコードや期限切れのコードをしばらくの間維持するために、Scalaソースコード全体をコメントアウトできるC(++)のような方法を探しています。

私はいくつかの選択肢を試しましたが、あなたが何を使っているのか聞きたいのですが、もっと良いものを思いついたのですか?

// Simply block-marking N lines by '//' is one way... 
//  <tags> """ anything

私の編集者はこれを簡単にしますが、それは実際にはTheThingではありません。実際の1行のコメントと簡単に混同されます。

次に、ネイティブXMLサポートがあると考えました。

<!-- 
  ... did not work
-->

<tags>ブロック内にいない限り、XMLでのラッピングは機能します。

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には--[==[マッチング]==]などがあります。私は甘やかされていると思いますか?

だから-私が監督しているいくつかの有用なトリックはありますか?

4

5 に答える 5

5

ソースコード管理メカニズムを利用してみませんか? コードを個別に保管し、個別のファイルとしてチェックインして、忘れてください。日常のコード ベースがこの種のものでごちゃごちゃになっているのは望ましくありません。

ただし、このコードを定期的に使用していない場合 (自動テストなど) は、コードの腐敗に悩まされることに注意してください。このようなものをコメント アウトするか棚上げするとすぐに、依存関係が進行し、やがて既存のコード ベースにリンクしなくなることがわかります。

于 2012-11-29T17:12:56.940 に答える
4

スタイル コメントSyntaxDefinition.xmlをサポートするように Scala モードを変更しました。/***...***/

/*...*/これは、ネストされたコメントに対するScala パーサーのサポートと同じではありませんが、エディターでそれを表現する方法が見つかりませんでした。

誰かが同じことをしたい場合は、次のようになります。

<!-- AK 30-Nov-2012
-
- The Scala parser handles nested '/*...*/' style comments, but the SEE
- syntax highlighting seems not. 
-
- We introduce '/***...***/' style comments (starting with three asterisks
- since JavaDoc uses '/**..*/' style) and deeper levels, to be used for
- blocking out code blocks, even if they contain '/*..*/' comments within.
-
- Note: Original comment handling misses a 'type="comment"' field. Is that vital?
-
- Test: If this works right, the following will be highlighted as a single comment:
-     <<
-       /***
-       */
-       ***/    <- green, not black (note: Scala parses these differently; this is just to test the mode)
-     <<
-->
<state id="Multilevel Comment AK" color="#236E25" type="comment" font-style="italic">
  <begin><regex>/\*\*(?'commentCatch'\*+)</regex></begin>
  <end><regex>(?#see-insert-start-group:commentCatch)\*\*/</regex></end>
  <import mode="Base" state="EmailAndURLContainerState" keywords-only="yes"/>
</state>

type="comment"既存のいくつかのコメント ハイライト ルールに追加することもできます。それが重要かどうかはわかりません (Scala 以外のモードではそうです)。

SubEthaEdit モードに関する情報。

于 2012-11-30T11:02:46.413 に答える
0

私は「削除の程度」を使用します。(1) コメントアウトします。(2) もう必要はないが、後で/他の場所で役立つ可能性があるコードの場合、コードフラグメントを投げる「.boneyard」フォルダーがあります (本番ソースツリーのすぐ外側) - 驚くほど便利です。(3)それを削除するだけで、結局必要になった場合はソース管理に依存します。

于 2015-07-26T15:36:19.733 に答える