Почему groovyConsole поддерживает `def name = Neo`, а groovysh — нет

Ниже приведены 2 строки кода:

def name = "Neo"
println name

Если я выполню его в groovysh, я получу ошибку Unknown property: name. Если я выполняю его в groovyConsole, все идет хорошо.


person Neo    schedule 23.01.2015    source источник
comment
@dmahapatro: я думаю, что этот вопрос является лучшим кандидатом на закрытие как дубликат, чем тот (который также имеет объявление Set проблема продолжается). но я думаю, что вопрос не столько в том, «почему groovysh делает это», сколько в том, «почему groovysh был спроектирован таким образом». что может не отвечать, это может быть просто придирка к близкой причине.   -  person Nathan Hughes    schedule 23.01.2015
comment
@NathanHughes в одном из ответов (от @dmahapatro) есть комментарии о причине, по которой groovysh ведет себя так. Но вы правы, другой вопрос был бы лучшим дубликатом. Однако это было исправлено в Groovy 2.4.0, как указано в ответе ниже.   -  person dmahapatro    schedule 23.01.2015


Ответы (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>
person dmahapatro    schedule 23.01.2015
comment
Вставьте это в свой файл ~/.groovy/groovysh.rc, если вы хотите сделать его поведением по умолчанию. - person Apteryx; 21.06.2018
comment
@Apteryx На самом деле для меня наборы, кажется, сохраняются между сеансами, хотя я ненавижу полагаться на это. - person Bill K; 18.10.2018