2015-01-23 6 views
2

Ниже 2 строки кода:Почему groovyConsole поддерживает определение функции имя = «Neo» `в то время как groovysh не

def name = "Neo" 
println name 

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

+1

@dmahapatro: я думаю, что [этот вопрос] (http://stackoverflow.com/q/7130529/217324) является лучшим кандидатом на закрытие в качестве дубликата, чем один (который также имеет набор выпуск декларации продолжается). но я думаю, что вопрос меньше «почему это делают groovysh», чем «почему был разработан groovysh». который не может быть подотчетен, это может быть просто притворством по близкой причине. –

+1

@NathanHughes один из ответов (от @dmahapatro) имеет комментарии о причине, почему 'groovysh' ведет себя как таковой. Но вы правы, другой вопрос будет лучшим дублированием. Однако это было зафиксировано в Groovy 2.4.0, как указано в ответе ниже. – dmahapatro

ответ

5

Если вы хотите функции от 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>