Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails:println只在某些时候起作用_Grails_Groovy_Metaclass_Expando_Println - Fatal编程技术网

Grails:println只在某些时候起作用

Grails:println只在某些时候起作用,grails,groovy,metaclass,expando,println,Grails,Groovy,Metaclass,Expando,Println,我创建了一个全新的grails项目,并将其放在引导程序中: ExpandoMetaClass.enableGlobally() Integer.metaClass.precision = {->return 1} println 3.precision() println "rofl" println 15.precision() 它实现了我所期望的,运行应用程序打印: 1 rofl 1 但是如果我取出println“rofl”它就不会打印第二个了。它只打印一个1,没有rofl。。。

我创建了一个全新的grails项目,并将其放在引导程序中:

ExpandoMetaClass.enableGlobally()

Integer.metaClass.precision = {->return 1}
println 3.precision()
println "rofl"
println 15.precision()
它实现了我所期望的,运行应用程序打印:

1
rofl
1
但是如果我取出
println“rofl”
它就不会打印第二个了。它只打印一个1,没有rofl。。。WTF

再一次,因为这对我来说没有任何意义,这段代码:

ExpandoMetaClass.enableGlobally()

Integer.metaClass.precision = {->return 1}
println 3.precision()
//println "rofl"
println 15.precision()
印刷品:

1

迈克,我想不出原因。你能在不同的环境中尝试吗?我只是在Groovy版本1.8.0 JVM:1.6.0_20、Win7和Grails 2引导以及Grails控制器操作下快速尝试了这一点,很抱歉说“它在我的上工作”。所以我所能想到的是,它与您正在使用的版本或它的设置方式有某种关联。你是怎么运作的

这是ubuntu的默认设置,与JVM无关。控制台不会重复相同的行。当我记得如何关闭时,将更新此答案。

您使用控制器的目的是什么?我有所有的代码在引导。我还升级了grails和groovy。仍然不起作用。只是在控制器中尝试了一下,但我确实尝试了引导。我不确定在STS上,您是从STS运行,还是仅仅从命令行或交互式运行?我所能想到的就是从不同的地方尝试,但我猜这就是你在过去几个小时里一直在尝试的。实际上,将grails升级到2.0真是让我大吃一惊。所以我对我的项目进行了grails升级,结果它被摧毁了。现在我无法运行任何Grails2.0。。。。准备好回答其他问题,所以!!将grails升级到2.0,groovy升级到1.8,将JVM从IcedTea 6更改为Oracle 6,再更改为Oracle 7。同样的结果。在我的工作PC上尝试过:win7 home jvm 6 grails 1.3.7也出现了相同的错误。