Coulage implicite dans des expressions

Le casting implicite, ou conversion implicite, est le fait pour un architecte de prendre le casting implicite d'un type de données et de convertir le type de valeur résultant en un autre type de données. Architect effectue uniquement des conversions implicites sur le type de valeur résultant du texte d'expression valide. Le transtypage implicite tire parti de certaines fonctionnalités des hiérarchies de types ou des représentations de types. Architect effectue iConversions implicites lorsqu’une expression d’un type est utilisé dans le contexte d’une variable particulière qui n’accepte pas ce type.

Dans Architect, les auteurs de flux ne peuvent affecter que des valeurs de types "similaires". Une variable de chaîne ne peut avoir qu’une affectation de valeur de chaîne. Mais l’analyseur Architect évalue le type de données de chaque expression et, si possible, réconcilie les résultats pour l’auteur du flux par le biais d’une conversion implicite.

Dans l’exemple suivant, l’auteur du flux souhaite que l’entier soit exprimé sous forme de chaîne. Chez exc terminer, l’expression résulte en la chaîne « 5».

ToString(5)

Ceci est un exemple de distribution explicite où l'auteur de l'expression convertit la valeur entière en 5 en une chaîne en ajoutant un appel de fonction ToString et en transmettant l'entier. La valeur résultante de cette expression lorsqu'elle est évaluée au moment de l'exécution sera « 5 ».

Un auteur de flux peut également entrer l’expression de chaîne valide suivante :

ToString(3+4)

Cette expression est considérée comme une distribution explicite. L’auteur du flux a demandé à l’analyseur syntaxique de convertir l’entier en chaîne. La distribution implicite ne se produit que sur le type résultant du texte d’expression entré.

Un auteur de flux peut également entrer cette expression de chaîne valide :

3+4

En ce qui concerne les types "similaires", cette expression n’est pas valide car elle tente d’affecter un entier à une chaîne, mais nous savons qu’une variable chaîne ne peut avoir qu’une affectation de chaîne. Mais avec casting implicite, Architect peut résoudre l’expression. L’analyseur ajoute la valeur ToString autour de l’expression, qui convertit l’entier en chaîne, renvoyant cette expression :

ToString(3+4)

Lorsque Architect effectue une conversion implicite, il renvoie un message contenant les détails de la conversion de l’expression d’édition boîte de dialogue.

Remarque :  Ces messages de conversion apparaissent uniquement dans l’édition d’édition boîte de dialogue. Ils n’apparaissent pas dans les modes littéral ou d’expression au niveau du champ. Cependant, Architect convertit l’expression, que vous la saisissiez au niveau du champ ou dans l’éditeur d’édition boîte de dialogue.

Les conversions implicites ne sont effectuées que sur les fonctions de transtypage prenant un paramètre. Les fonctions de transtypage avec plusieurs paramètres autorisés ne sont pas candidates à la conversion implicite car l’analyseur ne peut traiter l’action sur aucun paramètre après le premier.

Dans l'exemple précédent, nous savions que le résultat serait une valeur entière de 7. Mais considérons un exemple où nous ne savons pas quelle sera la valeur au moment de la conception :

Flow.MyInteger + 5

Dans ce cas, Flow.MyInteger est un type de données entier. Conceptuellement, nous savons que la valeur résultante est « la valeur de Flow.MyInteger plus la valeur de 5″. Nous ne savons pas quelle est la valeur de Flow.MyInteger, mais nous faire sachez qu'il s'agit d'une valeur entière plus une autre valeur entière, et cela se traduira par une valeur entière. Ceci est important pour le casting implicite : Le résultat de entier + entier = entier, et le type résultant est une chaîne.

Lorsque l’analyseur évalue l’expression, il interprète que le type résultant n’est pas une chaîne mais que le résultat du texte de l’expression est un entier. Par conséquent, il ajoute ToString en tant que conversion implicite et convertit le résultat en chaîne qui correspond au résultat souhaité.

Comme dans l’exemple précédent, lorsque Architect effectue une conversion implicite, il renvoie un message contenant les détails de la conversion de l’expression d’édition boîte de dialogue. Ces messages de conversion apparaissent uniquement dans l’édition d’édition boîte de dialogue. Ils n’apparaissent pas dans les modes littéral ou d’expression au niveau du champ. Cependant, Architect convertit l’expression, que vous la saisissiez au niveau du champ ou dans l’éditeur d’édition boîte de dialogue.

L’analyseur effectue une conversion implicite uniquement si le résultat est une expression valide. Mais considérons un exemple où le résultat est invalide. Nous savons que, dans la version initiale, Architect ne prend en charge la lecture des données d'exécution que pour trois langues : en-US, fr-CA et es-US. Par conséquent, l’expression suivante fonctionne si le flux s’exécute en en US, fr-CA ou es-US :

ToAudioNumber(5005)

Architect peut exprimer le nombre 5005 dans l’une des trois langues. Mais que se passe-t-il si un auteur de flux ajoute la République tchèque (cs-CZ) comme langue prise en charge, qui n'est pas l'une des 3 langues qui incluent rprise en charge de la lecture des données intempestive ? Les exemples suivants illustrent comment Architect gère les expressions non valides.

Lorsque l’auteur du flux commence à taper le nombre entier, Architect renvoie immédiatement un message d’erreur :

Si l’auteur du flux ajoute la fonction ToAudioNumber en tant que distribution explicite, Architect renvoie toujours une erreur :

La lecture des données n'est pas possible