MissingPropertyException в groovysh

Я запускаю groovysh и набираю следующий код:

groovy:000> String s = "Hello"
===> Hello
groovy:000> s
ERROR groovy.lang.MissingPropertyException:
No such property: s for class: groovysh_evaluate
        at groovysh_evaluate.run (groovysh_evaluate:2)
        ...
groovy:000>

Как получить доступ к s здесь?

(Если я изменю String s = "Hello" на s = "Hello", я смогу получить к нему доступ. Но я хочу знать, как получить к нему доступ в примере)


ОБНОВЛЕНИЕ

Я хочу использовать String s = "Hello" для определения переменной, потому что я хочу объявить ее тип. Например, если я напишу:

Date date = []

Дата будет java.util.Date. Но если я напишу:

date = []

Это будет ArrayList.


person Freewind    schedule 20.08.2011    source источник


Ответы (3)


Выражение s = "Hello" устанавливает переменную оболочки, выражение String s = "Hello" устанавливает локальную переменную, которая не сохраняется в среде оболочки. Дополнительные сведения см. в документации по Groovy Shell. Я не совсем понимаю, чего вы пытаетесь достичь, но, возможно, вам лучше использовать Groovy Console. для оценки сценариев Groovy.

person Benjamin Muschko    schedule 20.08.2011
comment
спасибо, groovy console может позволить мне это сделать. Вы имеете в виду, что нет никакого способа получить s от String s = ... в groovysh, верно? - person Freewind; 21.08.2011
comment
Вы можете обернуть его в функцию и возвращать s всякий раз, когда вам это нужно. Это был бы другой вариант. - person Benjamin Muschko; 21.08.2011

просто установите его в режим интерпретатора

groovy:000> :set interpreterMode

и вы можете просто прямо использовать

Date date = []

ссылка: http://www.groovy-lang.org/groovysh.html#GroovyShell-InterpreterMode

person Aizzat Suhardi    schedule 21.12.2015
comment
ТЫ. Это то, что я ожидал как пользователь Python. теперь я выполняю всегда groovysh --define=interpreterMode - person jgomo3; 07.05.2017

Ты можешь написать

date = [] as Date

чтобы убедиться, что дата действительно имеет тип Date. У меня была аналогичная проблема, и я использовал

bin = [1, 26, 42 ,7] as byte[]
bin.encodeBase64()
person bollin    schedule 12.06.2013