Отладка отличного кода в 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]