变量绑定如何在groovysh中实际工作?

时间:2013-05-08 16:23:47

标签: variables binding groovy groovyshell

这是我不明白的症结所在:

% groovysh
Groovy Shell (1.8.6, JVM: 1.6.0_21)
Type 'help' or '\h' for help.
------------------------------------------------------
groovy:000> class vars {
groovy:001> static int x = 1;
groovy:002> }
===> true
groovy:000> println new vars().x
1
===> null
groovy:000> println vars.x
ERROR groovy.lang.MissingPropertyException:
No such property: vars for class: groovysh_evaluate
Possible solutions: class
        at groovysh_evaluate.run (groovysh_evaluate:2)
        ...

如果vars解析为表达式new vars().x中的某些内容,为什么不在表达式vars.x中呢?它就像一个幻像标识符,实际上只是为了实例化而存在。

2 个答案:

答案 0 :(得分:3)

您的代码无效,因为您使用了错误的命名约定。你应该用大写字母V编写类。这样Groovy shell就知道你指的是一个类,而不是一个变量,以防Groovy无法确定它。

这就是你真正想要的:

groovy:000> class Vars {
groovy:001>     static int x = 1
groovy:002> }
===> true
groovy:000> Vars.x
===> 1

希望有所帮助!

答案 1 :(得分:0)

您的问题是vars,而不是对象,x未声明为静态属性。最佳做法是始终使用大写字母命名您的类,以防止这种混淆。