Es posible evaluar expresiones simples:
groovy:000> println "Hello" Hello ===> null groovy:000> 2+4 ===> 6El resultado de una evaluación queda en la variable especial
_
:
groovy:000> _ ===> 6
class Foo { def bar() { println "baz" } }Es posible introducir expresiones complejas que ocupen varias lineas (como una definición de una clase). Cuando la shell detecta que la expresión ha sido completada pasa a compilarla y evaluarla:
groovy:000> class Foo { groovy:001> def bar() { groovy:002> println "baz" groovy:003> } groovy:004> } ===> trueAhora podemos usar la definición anterior:
groovy:000> foo = new Foo() ===> Foo@b0095d groovy:000> foo.bar() baz ===> null groovy:000>Las variables de la shell no tiene tipo. Esta asignación define una variable shell:
groovy:000> foo = "bar" ===> bar groovy:000> foo ===> barEsta definición sin embargo evalúa una variable local que no será guardada en el entorno de la shell:
groovy:000> def tutu = "titi" ===> titi groovy:000> tutu ERROR groovy.lang.MissingPropertyException: No such property: tutu for class: groovysh_evaluate
Las variables así definidas tienen el ámbito de la línea:
groovy:000> def tutu = "titi"; println tutu titi ===> nullEs posible definir funciones y usarlas luego:
groovy:000> def hello(name) { groovy:001> println("Hello $name") groovy:002> } ===> true groovy:000> hello('LHP') Hello LHP ===> null
Casiano Rodríguez León