Como comenté en el artículo “null, ese gran desconocido“, Velneo hereda características de la herramienta que se usa para su desarrollo, el lenguaje C.
Otra de esas características heredadas es el casting implícito entre distintos tipos de variables. Para ilustrar que significa esto veamos un ejemplo:
Al ejecutar este código esperaríamos que el mensaje por pantalla fuera “4 facturas”, pero de forma sorprendente o no, la salida por pantalla es “4″.
¿Por qué sucede esto?
Casting implícito
En Velneo tenemos tipos de datos como en cualquier otro lenguaje: int, float, string, pero con la salvedad de que no tenemos que declararlos de forma explícita.
Por ello cuando realizamos operaciones con los datos Velneo utiliza el casting implícito para hacer las conversiones entre tipos de datos. El casting implícito se explica de forma breve en este artículo.
El casting implícito evita al desarrollador, en muchos casos, preocuparse por funciones de conversión entre tipos, aunque también implica estar más atento a las comparaciones y las operaciones entre datos.
Ejemplo
Supongamos que tenemos una cadena que representa un entero y queremos sumarle otro entero.
El resultado del código anterior es “43″. ¿Por qué? Velneo, ante la concatenación de datos, realiza un casting implícito en función al tipo de dato del primer componente de la concatenación, en este caso una cadena, o sea, antes de realizar la concatenación convierte el resto de los componentes a string.
¿Entonces como lo hacemos?
Pues tenemos varias opciones:
- Utilizamos la función fValor, que tal como dice la ayuda de Velneo Convierte una cadena alfabética en su valor numérico, haríamos Mensaje -> ‘a’ + fValor( ‘b’)
- Forzamos a que el primer componente sea del tipo que nos interesa. Hacemos Mensaje -> ‘b’ + ‘a’
Truco
Y el primer ejemplo, ¿cómo lo podemos resolver?. Una astucia a utilizar cuando usamos la función Mensaje, es siempre hacer que el parámetro se inicie con una cadena, en nuestro caso haríamos Mensaje -> “” + ‘a’ + ‘b’ y el resultado es el esperado: “4 facturas”.




Comentarios recientes