これは、 Google グループでの私の質問の再投稿です。うまくいけば、私はここでいくつかの応答を得るでしょう.
頻繁にこの問題に遭遇します。テキストが空でない場合、テキスト行を生成したい。空の場合は、行を生成しません。イラストテンプレート:
名前空間 @classSpec.getNamespace() @classSpec.getComment() クラス @classSpec.getName() { ... }
@classSpec.getComment() が意味のあるコメント テキストを返す場合、結果は次のようになります。
名前空間 com.example // これはコメントです クラス MyClass { ... }
しかし、コメントがなければ、それは
名前空間 com.example クラス MyClass { ... }
余分な空の行に注意してください。いりません。現在の解決策は、テンプレートを次のように記述することです
名前空間 @classSpec.getNamespace() @classSpec.getComment()class @classSpec.getName() { ... }
getComment() が戻り値に「\n」を追加することを確認してください。これにより、テンプレートが読みにくくなります。また、for ループで複数のパラメーターを持つ関数を生成する必要があるとします。各パラメーターにテンプレート コードの複雑なロジックが必要な場合は、上記のようにすべてを 1 行で記述する必要があります。それ以外の場合、結果ファイルには次のような機能があります
関数 myFunction( 文字列 stringParam、 整数 intParam、 長い longParam )
中心的な問題は、テンプレート ファイルにスクリプトだけでなく、出力に書き込まれる生のテキストも含まれていることです。スクリプト部分には、改行とインデントが必要です。コンパイラが通常行うように、スペースをトリミングしたいと考えています。ただし、生のテキストの場合、スペースはファイルで指定されているとおりに正確にする必要があります。この 2 つの部分を調整するには、生のテキストを制御するメカニズムがもう少し必要だと思います。
この場合に固有の、出力で複数行を単一行として扱う特別な記号はありますか? たとえば、次のように書くことができます
名前空間 @classSpec.getNamespace() @classSpec.getComment()\\ クラス @classSpec.getName() { ... }
ありがとう!