【问题标题】:Why groovyConsole supports `def name = "Neo"` while groovysh does not [duplicate]为什么groovyConsole支持`def name =“Neo”`而groovysh不支持[重复]
【发布时间】:2015-03-22 18:45:59
【问题描述】:

以下是两行代码:

def name = "Neo"
println name

如果我在groovysh 中执行它,我会得到Unknown property: name 错误。 如果我在groovyConsole 中执行,一切顺利。

【问题讨论】:

  • @dmahapatro:我认为this question 比那个更适合作为副本关闭(这也存在 Set 声明问题)。但我认为问题不是“为什么 groovysh 会这样做”,而是“为什么 groovysh 会这样设计”。这可能无法回答,这可能只是在争论密切的原因。
  • @NathanHughes 答案之一(来自@dmahapatro)有关于groovysh 行为如此的原因的cmets。但你是对的,另一个问题将是一个更好的重复。但是,这已在 Groovy 2.4.0 中修复,如下面的答案所述。

标签: groovy groovyshell groovy-console


【解决方案1】:

如果你想要 Groovy 2.4.0 的功能,你可以使用

:set interpreterMode true 看看有什么不同。 :)

groovy:000> def a = 10
===> 10
groovy:000> a
Unknown property: a
groovy:000> :set interpreterMode true
groovy:000> a
Unknown property: a
groovy:000> def b = 100
===> 100
groovy:000> b
===> 100
groovy:000>

【讨论】:

  • 如果您想让它成为默认行为,请将其添加到您的 ~/.groovy/groovysh.rc 文件中。
  • @Apteryx 实际上对我来说,它似乎在会话中持续存在——尽管我讨厌依赖它。
猜你喜欢
  • 2011-05-06
  • 2019-07-05
  • 1970-01-01
  • 2012-01-27
  • 2011-08-31
  • 1970-01-01
  • 2016-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多