Conversión implícita en expresiones
La fundición implícita, o conversión implícita, es el acto de Architect de tomar la fundición implícita de un tipo de datos y convertir el tipo de valor resultante a otro tipo de datos. Architect solo realiza conversiones implícitas en el tipo de valor resultante del texto de expresión válido. La conversión implícita aprovecha ciertas características de las jerarquías de tipos o representaciones de tipos. El arquitecto realiza iconversiones implícitas cuando una expresión de un tipo se usa en contexto con una variable particular que no acepta ese tipo.
En Architect, los autores de flujo solo pueden asignar valores de tipos "similares". Una variable de cadena solo puede tener una asignación de valor de cadena. Pero el analizador de Architect evalúa el tipo de datos de cada expresión y, si es posible, reconcilia los resultados para el autor del flujo a través de una conversión implícita.
En el siguiente ejemplo, el autor del flujo quiere que el número entero se exprese como una cadena. En tiempo de ejecución, la expresión da como resultado la cadena "5".
ToString(5)
ToString(3+4)
Esta expresión se considera una reparto explícito. El autor del flujo ordenó al analizador que convierta el número entero en una cadena. El reparto implícito ocurre solo en el tipo resultante del texto de expresión introducido.
Un autor de flujo también puede ingresar esta expresión de cadena válida:
3+4
Con respecto a los tipos "como", esta expresión no es válida porque la expresión intenta asignar un número entero a una cadena, pero sabemos que una variable de cadena solo puede tener una asignación de cadena. Pero con casting implícitoEl arquitecto puede resolver la expresión. El analizador agrega el valor ToString alrededor de la expresión, que convierte el entero en una cadena y devuelve esta expresión:
ToString(3+4)
Cuando Architect realiza una conversión implícita, devuelve un mensaje con detalles de conversión en el cuadro de diálogo Editar expresión de la expresión.
Las conversiones implícitas solo se realizan en funciones de conversión de tipos que toman un parámetro. Las funciones de conversión de tipos con múltiples parámetros permitidos no son candidatos para la conversión implícita porque el analizador no puede procesar la acción en ningún parámetro después del primero.
En el ejemplo anterior, sabíamos que el resultado sería un valor entero de 7. Pero considere un ejemplo en el que no sabemos cuál será el valor en el momento del diseño:
Flow.MyInteger + 5
En este caso, Flow.MyInteger es un tipo de datos entero. Conceptualmente, sabemos que el valor resultante es "el valor de Flow.MyInteger más el valor de 5". No sabemos cuál es el valor de Flow.MyInteger, pero hacer sepa que es un valor entero más otro valor entero, y esto dará como resultado un valor entero. Esto es importante para la conversión implícita: El resultado de integer + integer = integer y el tipo resultante es una cadena.
Cuando el analizador evalúa la expresión, interpreta que el tipo resultante no es una cadena, sino que el resultado del texto de la expresión es un número entero. Por lo tanto, agrega ToString como una conversión implícita y convierte el resultado en una cadena que es el resultado deseado.
Como en el ejemplo anterior, cuando Architect realiza una conversión implícita, devuelve un mensaje con detalles de conversión en el cuadro de diálogo Editar expresión de la expresión. Estos mensajes de conversión solo aparecen en el cuadro de diálogo Editar expresión. No aparecen en los modos de expresión o literal a nivel de campo. Sin embargo, Architect convierte la expresión ya sea que la ingrese a nivel de campo o en el cuadro de diálogo Editar expresión.
El analizador solo realiza una conversión implícita si el resultado es una expresión válida. Pero consideremos un ejemplo donde el resultado no es válido. Sabemos que, en la versión inicial, Architect solo admite la reproducción de datos en tiempo de ejecución para tres idiomas: en-US, fr-CA y es-US. Por lo tanto, la siguiente expresión funciona si el flujo se ejecuta en en-US, fr-CA o es-US:
ToAudioNumber(5005)
El arquitecto puede expresar el número 5005 en cualquiera de los tres idiomas. Pero, ¿qué pasa si un autor de flujo agrega República Checa (cs-CZ) como idioma admitido, que no es uno de los 3 idiomas que incluye rsoporte de reproducción de datos untime? Los siguientes ejemplos ilustran cómo Architect maneja las expresiones no válidas.
Cuando el autor del flujo comienza a escribir el número entero, Architect devuelve inmediatamente un mensaje de error:
Si el autor del flujo agrega la función ToAudioNumber como una conversión explícita, Architect aún devuelve un error: