JShellでは、それが起こったことがないようにあなたが実行されたことを声明を削除する方法はありますか?
たとえば、我々は次のコードがあるとします。
JShell shell = JShell.create();
shell.eval("int x = 5;");
shell.eval("x = 7;");
バック一歩を行くJShellで何かはありますか?これは、メソッドのようなものでgoBackOneStep()
、それを実行した後、セットはx
5にバックします。
shell.goBackOneStep();
shell.eval("x") // x is evaluated to 5
私はに気づいJShellのAPIと呼ばれる方法があるdrop(Snippet)
取り除くように見えるSnippet
履歴からは、それは何の効果は削除されませんSnippet
状態に持っていたし。
ドロップしないjshellにスニペットのステータスを変更jshellドロップ手段をDROPPED
(彼らはより積極的であり、あなたは再びそれを作成するまで、あなたがそれらを使用することはできませんので)、それらを非アクティブにします
それは非アクティブになって、スニペットを削除します。名前またはインポート、クラス、メソッド、または変数のIDのいずれかを提供。複数のスニペットの場合は、スペースで名前とIDを区切ります。コードスニペットのIDを確認するために/ listコマンドを使用します。
スニペットがあるため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)を使用しています。