2017-01-24 31 views
8

Próbowałem jshell i nie mogłem znaleźć opcji wklejenia wielu wyrażeń linii. Czy jest nawet możliwe wklejenie wielu wierszy w jshell. Podobne do tego, co oferuje scala z paste mode.Wklej wielowierszowy w jshell

+0

Według Roberta Field, to została ustalona na [tego błędu] (https://bugs.openjdk.java.net/browse/JDK-8169595). Czy to nadal jest problem dla ciebie? –

Odpowiedz

6

Więc jeśli masz kodu:

int c = 2; 
int j = 4; 
int x = 5; 

skopiować i wkleić do jshell tylko pierwsze dwie instrukcje są przetwarzane.

Ale jeśli masz kodu:

int c = 2; int j = 4; int x = 5; 

i wkleić do jshell:

jshell> int c = 2; int j = 4; int x = 5; 
     c ==> 2 
     j ==> 4 
     x ==> 5 

Nawet więcej linii kodu tak:

HashMap<Integer, Integer> map2 = new HashMap<>(); for (int i = 0; i < 15; ++i) { map2.put(i, i);map2.put(i, i); } System.out.println(map2); 

rzeczywiście działa.

Dlaczego? Nie wiem.

Jedynym sposobem, wiem, że copy/paste zadziała to poprzez (wpisz ją w jshell):

/edit

i można wkleić tyle, ile chcesz.

+0

Dzięki. Zastanawiałem się tylko, czy czegoś brakuje, czy jakiegoś nieudokumentowanego dowództwa. –

+1

@KunalKanojia nie wygląda na to, że coś przegapiłeś ... – Eugene

3

Próbowałem go i przetwarzane są tylko pierwsze dwa wiersze. Próbowano również z dodatkowymi znakami nowej linii na końcu i więcej niż trzema liniami, a wciąż tylko pierwsze dwa wiersze zostały przetworzone. Nie wiem dlaczego, ale podejrzewam, że to błąd.

3

To był błąd. Zostało ustalone: ​​

https://bugs.openjdk.java.net/browse/JDK-8169595 
+0

Wygląda na to, że naprawili problem z zawieszeniem, ale nadal nie mogę wkleić więcej niż 2 wiersze (kompilacja 9 + 181) –