Отладка отличного кода в Groovysh по шагам

Я новичок в Java и Groovy, и это действительно простой вопрос об отладке кода Groovy в groovysh шаг за шагом.

$ groovysh
groovy:000> String str = "abcd"
===> abcd
groovy:000> println str
Unknown property: str

В интерактивной отладочной оболочке для всех других языков я смог определить переменную и использовать ее на всех следующих этапах. Как это сделать в groovysh?

1 ответ

Решение

Как определено в groovysh страница документации, по умолчанию все переменные нетипизированы, поэтому используется def или идентификатор конкретного типа (например, String) не работает. В этом случае правильный синтаксис просто str = "abcd".

$ groovysh
Groovy Shell (3.0.6, JVM: 11.0.6)
Type ':help' or ':h' for help.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
groovy:000> str = "abcd"
===> abcd
groovy:000> str
===> abcd
groovy:000> :S variables
Variables:
  str = abcd
  _ = abcd
===> [str:abcd, _:abcd]

Как вы можете видеть в приведенном выше примере, вы можете перечислить все переменные, зарегистрированные в сеансе оболочки, с помощью :S variablesкоманда. (Вы можете перечислить все доступные команды с помощью :h выполняется в окне оболочки.)

Однако есть способ включить типизированные переменные. Это называется интерпретируемым режимом, и его можно активировать с помощью := interpretedMode команда, как в примере ниже:

$ groovysh
Groovy Shell (3.0.6, JVM: 11.0.6)
Type ':help' or ':h' for help.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
groovy:000> str = "abcd"
===> abcd
groovy:000> str
===> abcd
groovy:000> :S variables
Variables:
  str = abcd
  _ = abcd
===> [str:abcd, _:abcd]
groovy:000> := interpreterMode
groovy:000> String str2 = "efgh"
===> efgh
groovy:000> str2
===> efgh
groovy:000> str == str2
===> false
groovy:000> :S variables
Variables:
  str = abcd
  _ = false
  groovysh_collected_boundvars = [str2:efgh]
  str2 = efgh
===> [str:abcd, _:false, groovysh_collected_boundvars:[str2:efgh], str2:efgh]

Другие вопросы по тегам