Casting en Velneo

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:

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.

ejemplo

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:

  1. 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’)
  2. 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”.

Anuncios

3 responses to this post.

  1. Posted by Oscar on 07 agosto 2007 at 9:20 am

    Muy bueno este blog, excelente idea y sobre todo la ayuda que prestas a los que estamos todavía un poco verdes con esta herramienta. Visitaré la página para seguir tus consejos.
    Gracias y un saludo
    Oscar

    Responder

  2. Posted by Cuco on 07 agosto 2007 at 11:09 am

    Yo el tema del “null”, lo veo muy simple:

    En el ejemplo intentas comparar una variable local ‘null’ a la que intentas asignar un valor nulo, no asignándole nada por lo que la variable no toma ni valor ni tipo (un valor incierto, si acaso se configurará como numérico, no lo sé) con otra variable local “a” a la que asigna un valor cierto, una cadena vacía.

    Pues claro, la comparación da cero y se encamina por el “else”, ¿qué esperabas?

    Con respecto a lo del “Casting”, es algo que viene, creo, hasta en la ayuda del editor, pero explicado desde C++.

    No está mal que alguién nos desentrañe las entrañas C++ de Velneo. Quedo a la espera de algo más jugoso.

    Responder

  3. Posted by coco on 27 mayo 2010 at 4:40 pm

    coco venado buseo elefante
    DISTINI

    Responder

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: