Expresiones

Es posible evaluar expresiones simples:

groovy:000> println "Hello"
Hello
===> null
groovy:000> 2+4
===> 6
El 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> }
===> true
Ahora 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
===> bar
Esta 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
===> null
Es 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
2010-04-30