¿Buscas nuestro logo?
Aquí te dejamos una copia, pero si necesitas más opciones o quieres conocer más, visita nuestra área de marca.
Aquí te dejamos una copia, pero si necesitas más opciones o quieres conocer más, visita nuestra área de marca.
dev
A. Vilches Hace 10 años Cargando comentarios…
Una de las principales ventajas de Groovy es el uso implícito de getters/setters para el acceso y escritura de variables; y la generación durante la compilación, de getters/setters para todos los atributos de nuestras clases.
Con un par de ejemplos se ve más claro: si tenemos una clase con dos atributos:
class Persona {
String nombre
int edad
}
El compilador de Groovy va a generar automáticamente los setters y los getters correspondientes, quedando la clase como si hubiera sido codificada así en Java:
public class Persona {
private String nombre;
private int edad;
public String getNombre() { return nombre; }
public setNombre(String nombre) { this.nombre = nombre; }
public int getEdad() { return edad; }
public setEdad(int edad) { this.edad = edad; }
}
Por otro lado, cuando accedemos a una variable desde Groovy, estamos usando implícitamente los getters y setters, de manera que el siguiente código Groovy:
def valor = miedad
persona.nombre = valor
Sería el equivalente a esto:
def valor = getMiedad()
getPersona().setNombre(valor)
Es decir, cualquier acceso a una variable que no exista en el contexto actual, o cualquier acceso a un atributo de un objeto, se transforma en un get/set (para saltarse esto, es necesario utilizar el operador "Java field" de la siguiente manera: persona.@nombre = valor)
Estos dos características nos permiten añadir, por ejemplo, nuevas variables en nuestros controladores cuyos valores se carguen de base de datos o de la sesión (o de los dos sitios). Por ejemplo, supongamos que tenemos un controlador que requiere en cada petición la lectura de base de datos del usuario y de una factura:
class EjemploController {
def index = {
def usuario = Usuario.get(session.miusuario) // Se supone que durante el login, se carga el valor miusuario en la sesion
usuario.accesos = usuario.accesos + 1
usuario.save()
def factura = Factura.findByUsuarioAndFecha(usuario, new Date())
sendEmailAviso(factura.importe, usuario.email)
...
}
}
Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.
Tecnología, personas e impacto positivo.
Cuéntanos qué te parece.