在groovysh中逐步调试groovy代码



我是Java和Groovy的新手,这是一个关于在groovysh中逐步调试Groovy代码的非常简单的问题。

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

在适用于所有其他语言的交互式调试shell中,我能够定义一个变量,并在中使用它,完成以下所有步骤。如何在groovysh中也做到这一点?

根据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命令列出在shell会话中注册的所有变量。(您可以列出在shell窗口中执行: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]

最新更新