miércoles, 4 de febrero de 2009

JavaFX: un detalle importante sobre como se retornan valores


Si se han fijado, muchas veces nos encontramos con cosas como esta en el código de una aplicación JavaFX:

function figura():Node {
Group {
content: Line { startX:0,
startY:0, endX:100,
endY:100 }
}
};


Ahora, según la definición de la función, esta debe retornar un NODO (un objeto que puede ser una figura geométrica o una imagen, por ejemplo). Pero ese código, nunca ejecuta "explícitamente" un return.

Lo que sucede, es que JavaFX Script asume (salvo que exista explícitamente una instrucción RETURN), que la última expresión evaluada es lo que se retorna. En el caso del código (arriba), retornaría el Group.

El código escrito de manera más "formal" podría ser este:

function figura():Node {
var objeto = Group {
content: Line { startX:0,
startY:0, endX:100,
endY:100 }
};
return objeto;
};


Ahora, esta flexibilidad no deja de tener su encanto al poder por ejemplo escribir algo como:

var resultado:Number = if (a==b)
then { a+b/c } else { d/e+f };


... o poder decribir el cuerpo de una función como:

function calculo(a:Number,
b:Number):Number {

a + 1000 / b

};


En realidad, es un detalle que no deja de ser comodo y que hace más comprensible y breve el código... quizas más natural (siendo siempre opcional, y teniendo siempre la posibilidad de ser mas "formal" al codificar).

Ojalá esta explicación ayude a que comprendan mejor el código de algunos scripts.

No hay comentarios: