final def Lados = 4; // Constante def distancia = 2; // Variable
No es que no se pueda seguir haciendo así (es perfectamente válido, e incluso recomendado), pero es mejor que vayamos teniendo en cuenta qué está sucediendo "por debajo".
Cuando jC detecta la palabra reservada def, lo que hace es fijarse en lo que aparece después del símbolo igual, la asignación, para saber qué tipo debe asignarlo a la variable. Por ejemplo, en el caso de arriba, tanto a Lados como a distancia se le asigna el tipo número entero o int.
Si nos planteamos el siguiente caso:
final def PI = 3.1416; final def CR = '\n';
En este caso, jC deduce que el tipo para PI es número flotante, que se denomina double (por doble precisión). El tipo para CR es un carácter, o char. La tabla completa de tipos disponibles es la siguiente:
Tipo | Explicación |
boolean | Sólo puede almacenar dos valores: true(o verdadero) or false (falso). Además, true y false son palabras reservadas en el lenguaje (no se pueden crear variables con esos nombres, por ejemplo). Una condición, como por ejemplo, i > 5, se evalúa a true o false. |
char | Usado para representar caracteres, según la norma UTF-16. |
int | Numeros enteros (positivos, el cero, y negativos). Es capaz de representar números de -2 mil millones a +2 mil millones. |
double | Números reales o en coma flotante. Soportan un rango muy grande, aunque precisamente debido a temas de precisión, para realizar comparaciones numéricas entre números enteros, es mejor utilizar int. |
Las definiciones que aparecen más arriba se pueden reescribir así:
final int Lados = 4; // Constante int distancia = 2; // Variable final double PI = 3.1416; final double CR = '\n';
¡Es el momento de experimentar! En cualquier lugar donde se escribe def, se puede sustituir por su tipo, que ahora ya sabemos cuáles son (al menos los tipos básicos, pronto veremos los tipos complejos).
Un ejemplo:
/** @name Poly * @brief Dibuja polígonos * @author jbgarcia@uvigo.es * @date 2013-8-10 */ import media.gw; import media.turtle; final int Lados = 4; final int Distancia = 35; double angulo = 360 / Lados; gw.setTitle( "Poly" ); for(int i = 0; i < Lados; ++i) { turtle.turnRight( angulo ); turtle.forward( Distancia ); }
Y recuerda, no es que no se pueda utilizar def, de hecho es más cómodo, y por tanto aconsejable.
No hay comentarios:
Publicar un comentario