2012-02-12 15 views

Respuesta

6

La respuesta de Burt es correcta, pero el verdadero problema que estaba teniendo es que no entendí qué es def. En lugar de ser como var en JavaScript, puedes pensar que es Object en Java.

pensé que el uso de def era como hacer (JavaScript)

var test = function() { 
    alert("test"); 
}

mientras que en realidad es igual que (Java)

public Object test() { 
    return someObject; 
}

No es un tipo diferente de la función/cierre, es como se puede aplicar un tipo de devolución def a cualquier objeto (Groovy no tiene primitivas de datos, por lo que cualquier valor también es un objeto, a diferencia de Java).

Ayuda a mi cerebro Java para pensar en

def bar = "foo"; 

como

Object bar = "foo"; 
16

render es nula por lo que en este caso la acción test podría ser void, pero en el caso en el que devuelven un modelo de mapear la acción tiene que ser no nula:

def create() { 
    [personInstance: new Person(params)] 
} 

Dado que algunas acciones pueden devolver una valor y algunos no, la sintaxis general tiene que devolver def para admitir todas las variantes.

Cuestiones relacionadas