Я пробовал jshell и не смог найти возможность вставить несколько строковых выражений. Можно ли даже вставить несколько строк в jshell. Подобно тому, что предлагает scala с paste mode
.
Многострочная вставка в jshell
Ответы (4)
Итак, если у вас есть такой код:
int c = 2;
int j = 4;
int x = 5;
Скопируйте и вставьте в jshell, обрабатываются только первые два оператора.
Но если у вас есть такой код:
int c = 2; int j = 4; int x = 5;
И вставьте в jshell:
jshell> int c = 2; int j = 4; int x = 5;
c ==> 2
j ==> 4
x ==> 5
Еще больше таких строк кода:
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);
на самом деле будет работать.
Почему? Я не знаю.
Единственный способ, которым я знаю, что копирование/вставка будет работать, - это через (введите его в jshell):
/редактировать
и вы можете вставить столько, сколько хотите.
JSHELLEDITOR
, VISUAL
и EDITOR
. Чтобы использовать другие редакторы, такие как Vim, например, export JSHELLEDITOR=vim
. Для всех синопсисов /edit
введите /help /edit
внутри jshell.
- person Quar; 06.06.2019
На всякий случай, если люди все еще попадают сюда, небольшая настройка для вставки всего блока кода в jshell
заключается в заключении его в фигурные скобки {}
следующим образом:
{
int c = 2;
int j = 4;
int x = 5;
// access these only in this scope though
System.out.println("c : " + c + ", j : " + j + ", x = " + x);
}
Пример экрана:
jshell
сниппетами, я обнаружил, что удобнее (по крайней мере, для меня) настроить внешний редактор (в моем случае Notepad++) для простого ввода нескольких строк сниппетов. Соответствующие подробности описаны в документации JShell: Внешний редактор; Примечание! Чтобы запустить код, введенный с помощью внешнего редактора, вы должны закрыть ваш редактор, после чего код будет выполнен.
- person informatik01; 22.04.2019
Я пробовал, и обрабатываются только первые две строки. Также пробовал с дополнительными символами новой строки в конце и более чем тремя строками, и все равно обрабатывались только первые две строки. Не знаю почему, но подозреваю, что это баг.
Это была ошибка. Исправлено: https://bugs.openjdk.java.net/browse/JDK-8169595