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 강하 수단 조각의 상태를 변경 드롭 jshellDROPPED하고는 비활성 없습니다 만들기 (그들은 더 이상 활성 있도록하고 당신이 다시 만들 때까지 사용할 수 없습니다)

이 비활성하고, 코드 조각을 삭제합니다. 이름 또는 수입, 클래스, 메소드 또는 변수들의 ID 중 하나를 제공한다. 두 개 이상의 조각 들어, 공간의 이름과 ID를 구분합니다. 코드 조각의 ID를 확인하려면 / list 명령을 사용합니다.

자격 정지

코드 조각 때문에 JShell.drop (발췌문)를 명시 적으로 호출의 비활성 상태입니다.

당신이이 아래의 코드에서 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의 목록을 표시합니다. 어떤 옵션을 입력하지 않으면, 모든 활성 미리보기가 표시하지만, 시작 조각이 아니다.

/ 목록 -all

시작 조각 실패 조각을 포함하여 모두 표시 조각은 덮어했다, 또는 하락했다. S로 시작하는 ID가 시작 조각입니다. E로 시작하는 ID는 실패 조각입니다.

JShell 거기에 뭔가 한 단계 뒤로 들어가 있습니까?

jshell 각 입력에서 정확히 하나의 스 니펫 그래서 조각의 롤백 할 수있는 방법은 없습니다.

입력 소스입니다 코드, 하나 개의 표현, 문장, 변수 선언, 메소드 선언, 클래스 선언 또는 수입 정확히 하나의 완전한 조각이어야한다. 개별 완전한 미리보기를 사용 SourceCodeAnalysis.analyzeCompletion (문자열)에 임의의 입력을 중단합니다.

추천

출처http://43.154.161.224:23101/article/api/json?id=207993&siteId=1