【问题标题】:Grails: println only works sometimes or somethingGrails:println 仅在某些时候有效
【发布时间】:2012-02-11 15:55:10
【问题描述】:

我制作了一个全新的 grails 项目并将其放入引导程序中:

ExpandoMetaClass.enableGlobally()

Integer.metaClass.precision = {->return 1}
println 3.precision()
println "rofl"
println 15.precision()

它符合我的预期,运行应用程序打印:

1
rofl
1

但如果我取出println "rofl",它不会打印第二个。它只打印一个没有 rofl 的 1... WTF?

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

ExpandoMetaClass.enableGlobally()

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

打印:

1

【问题讨论】:

    标签: grails groovy metaclass expando println


    【解决方案1】:

    Mikey,我想不出原因。可以换个环境试试吗?我刚刚在 Groovy 版本:1.8.0 JVM:1.6.0_20、Win7 和 Grails 2 BootStrap 以及一个 Grails 控制器操作下快速尝试了这个,很抱歉说“它适用于我的”。所以我能想到的只是它与您正在使用的版本或它的设置方式有某种关系。你是怎么运行这个的?

    【讨论】:

    • 你用控制器做什么?我在引导程序中有所有代码。我还升级了我的 grails 和 groovy。还是不行。
    • 刚刚在控制器中尝试过,但我肯定尝试过 Bootstrap。我不确定 STS,您是从 STS 运行还是只是命令行或交互式运行?我能想到的就是从不同的地方尝试,但我猜这就是你过去几个小时所尝试的。
    • 实际上将 grails 升级到 2.0 让我大吃一惊。
    • 所以我对我的项目进行了 grails 升级并将其销毁。现在我无法运行任何 grails 2.0.... 为其他一些问题做好准备,所以!!
    • 将 grails 升级到 2.0,将 groovy 升级到 1.8,将 JVM 从 IcedTea 6 更改为 Oracle 6 再到 Oracle 7。结果相同。在我的工作电脑上试过:win7 home jvm 6 grails 1.3.7 也同样的错误。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-10-04
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      • 2018-12-11
      • 2018-02-19
      • 2020-09-14
      • 1970-01-01
      • 2022-01-01
      相关资源
      最近更新 更多