JShellで履歴を削除する方法はありますか?

リンドストーム:

JShellでは、それが起こったことがないようにあなたが実行されたことを声明を削除する方法はありますか?

たとえば、我々は次のコードがあるとします。

 JShell shell = JShell.create();
 shell.eval("int x = 5;");
 shell.eval("x = 7;");

バック一歩を行くJShellで何かはありますか?これは、メソッドのようなものでgoBackOneStep()、それを実行した後、セットはx5にバックします。

 shell.goBackOneStep();
 shell.eval("x") // x is evaluated to 5

私はに気づいJShellのAPIと呼ばれる方法があるdrop(Snippet)取り除くように見えるSnippet履歴からは、それは何の効果は削除されませんSnippet状態に持っていたし。

デッドプール :

ドロップしないjshellにスニペットのステータスを変更jshellドロップ手段をDROPPED(彼らはより積極的であり、あなたは再びそれを作成するまで、あなたがそれらを使用することはできませんので)、それらを非アクティブにします

それは非アクティブになって、スニペットを削除します。名前またはインポート、クラス、メソッド、または変数のIDのいずれかを提供。複数のスニペットの場合は、スペースで名前とIDを区切ります。コードスニペットのIDを確認するために/ listコマンドを使用します。

DROPPED

スニペットがあるためJShell.dropを明示的に呼び出し(スニペット)の非アクティブです。

以下のコードでは、2を持っているsnippetsし、使用することによってdrop、あなたは彼らが非アクティブになり

JShell shell = JShell.create();
          shell.eval("int x = 5;");
          shell.eval("x = 7;");

    shell.snippets().forEach(s1->shell.drop(s1));

    shell.snippets().forEach(s2->{
        System.out.println(shell.status(s2));   //DROPPED
    });

   shell.snippets().forEach(System.out::println);  //we print all active and inactive snippets

同様に、あなたはまた、すべてのアクティブおよびドロップスニペット見ることができますjshellコンソールを

/リスト[オプション]

スニペットとそのIDのリストを表示します。noオプションを入力しない場合は、すべてのアクティブなスニペットが表示されますが、起動時のスニペットではありませんされています。

/リスト-all

起動時のスニペットと失敗したスニペットを含めすべて表示しスニペットは、上書きされた、または削除されました。Sで始まるIDは、起動時の抜粋です。Eで始まるIDが失敗したスニペットです。

バック一歩を行くJShellで何かはありますか?

スニペットをロールバックする方法がないので、jshell各入力に正確に一つの断片です。

入力は、一つの発現、声明、変数宣言、メソッドの宣言、クラス宣言、またはインポートされたソースコードの正確に一つの完全なスニペット、する必要があります。個々の完全なスニペットに任意の入力を解除するには、SourceCodeAnalysis.analyzeCompletion(String)を使用しています。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=207996&siteId=1