|
- Présentation
- Inférence de type : affectation par copie
- Syntaxes
- Fonctionnement
- Les types simples gérés par l'affectation par copie
- Inférence de type : affectation par référence
- Syntaxes
Inférence de type : affectation par copie Syntaxes 1. Inférence simple :
soit <Variable> = <Valeur>
où : - <Variable> correspond au nom de la variable à déclarer.
- <Valeur> correspond à la valeur affectée à la variable à déclarer.
Versions 19 et supérieures2. Inférence multiple :
soit (<Variable 1>, ..., <Variable N>) = (<Valeur 1>, ..., <Valeur N>)
où : - <Variable 1> ... <Variable N> correspondent aux noms des variables à déclarer.
- <Valeur 1> ... <Valeur N> correspondent aux valeurs affectées à chaque variable à déclarer.
Nouveauté 192. Inférence multiple :
soit (<Variable 1>, ..., <Variable N>) = (<Valeur 1>, ..., <Valeur N>)
où : - <Variable 1> ... <Variable N> correspondent aux noms des variables à déclarer.
- <Valeur 1> ... <Valeur N> correspondent aux valeurs affectées à chaque variable à déclarer.
2. Inférence multiple :
soit (<Variable 1>, ..., <Variable N>) = (<Valeur 1>, ..., <Valeur N>)
où : - <Variable 1> ... <Variable N> correspondent aux noms des variables à déclarer.
- <Valeur 1> ... <Valeur N> correspondent aux valeurs affectées à chaque variable à déclarer.
Fonctionnement Lors de l'affectation par copie, si le type de la variable peut être déterminé à la compilation, la variable est déclarée selon le type de la valeur. Une copie de la valeur est affectée à la variable. Exemples :
soit Montant = 1500.69 // type réel
soit Ville = "Montpellier" // type chaîne
Versions 19 et supérieures
// Inférence multiple soit (x, y) = (1, "A")
// Inférence multiple via une procédure renvoyant des valeurs multiples soit (x, y) = MaProcédureARetourMultiple()
Nouveauté 19
// Inférence multiple soit (x, y) = (1, "A")
// Inférence multiple via une procédure renvoyant des valeurs multiples soit (x, y) = MaProcédureARetourMultiple()
// Inférence multiple soit (x, y) = (1, "A")
// Inférence multiple via une procédure renvoyant des valeurs multiples soit (x, y) = MaProcédureARetourMultiple()
Remarque : La variable garde son type et ne change pas de type en cours d'exécution même si une autre valeur d'un type différent lui est affectée. Si le type de la variable ne peut pas être déterminé à la compilation, le type sera déterminé au moment de l'exécution, donc dynamiquement (comme lorsque un paramètre de procédure n'est pas typé). Par exemple :
// Cas type inconnu au moment de la compilation PROCEDURE MaProc(Param1)
soit MaVar = Param1
// Comme le paramètre Param1 n'est pas typé, // son type est inconnu au moment de la compilation // La variable Param1 sera typée du type de la valeur passée en paramètre // au moment de l'appel de la procédure. // La variable MaVar sera donc typée également // du type de la variable Param1 connu uniquement au moment de l'exécution.
Les types simples gérés par l'affectation par copie Les types simples gérés par l'affectation par copie sont les suivants : | | Type de la valeur | Type utilisé |
---|
booléen | booléen | entier sans signe sur 1 octet | entier | entier sans signe sur 2 octets | entier | entier sans signe sur 4 octets | entier sans signe sur 4 octets | entier sans signe sur 8 octets | entier sans signe sur 8 octets | entier sur 1 octet | entier | entier sur 2 octets | entier | entier | entier | entier sur 8 octets | entier sur 8 octets | monétaire | monétaire | décimal | décimal | réel sur 4 octets | réel sur 4 octets | réel | réel | caractère | caractère | chaîne | chaîne (Ansi ou Unicode) | chaîne sur N | chaîne (Ansi ou Unicode) | chaîne Ansi | chaîne Ansi | chaîne Ansi sur N | chaîne Ansi | chaîne Unicode | chaîne Unicode | chaîne Unicode sur N | chaîne Unicode | chaîne ASCIIZ sur N | chaîne Ansi | chaîne Fixe sur N | chaîne Ansi | chaîne Pascal sur N | chaîne Ansi | buffer | buffer | date | date | heure | heure | dateheure | dateheure | durée | durée | police | police | procédure | procédure |
Inférence de type : affectation par référence Syntaxes 1. Inférence simple :
soit <Variable> <- <Valeur>
où : - <Variable> correspond au nom de la variable à déclarer.
- <Valeur> correspond à la valeur affectée à la variable à déclarer.
Versions 19 et supérieures2. Inférence multiple :
soit (<Variable 1>, ..., <Variable N>) <- (<Valeur 1>, ..., <Valeur N>)
où : - <Variable 1> ... <Variable N> correspondent aux noms des variables à déclarer.
- <Valeur 1> ... <Valeur N> correspondent aux valeurs affectées à chaque variable à déclarer.
Nouveauté 192. Inférence multiple :
soit (<Variable 1>, ..., <Variable N>) <- (<Valeur 1>, ..., <Valeur N>)
où : - <Variable 1> ... <Variable N> correspondent aux noms des variables à déclarer.
- <Valeur 1> ... <Valeur N> correspondent aux valeurs affectées à chaque variable à déclarer.
2. Inférence multiple :
soit (<Variable 1>, ..., <Variable N>) <- (<Valeur 1>, ..., <Valeur N>)
où : - <Variable 1> ... <Variable N> correspondent aux noms des variables à déclarer.
- <Valeur 1> ... <Valeur N> correspondent aux valeurs affectées à chaque variable à déclarer.
L'affectation par référence est disponible uniquement pour des types complexes : - Type Objet : Classe, Structure, Classe .NET, type avancé, ...
- Type Conteneur : Tableau, Tableau associatif, Pile, File, Liste, ...
Lors d'une affectation par référence, la valeur de la variable de référence n'est pas copiée dans la nouvelle variable mais la nouvelle variable pointe sur la variable de référence. Dans ce cas, si la variable qui sert de référence est modifiée, la nouvelle variable est aussi modifiée. Exemple :
clMonClient est un cClient // classe cClient, objet clMonClient soit clClient <- clMonClient // type classe, clClient pointe sur l'objet clMonClient
tabPrix est un tableau de 5 monétaires tabPrix[1] = 500.00 tabPrix[2] = 250
soit tPrix <- tabPrix // type tableau, tPrix pointe sur le tableau tabPrix
|
|
|
| |
| Attention aux classes qui contiennent des images |
|
| On peut déclarer une classe en faisant "soit gclOccurence = maclasse", mais si la classe maclasse contient un membre de type image, ça génère une exception sans indiquer pourquoi. |
|
|
|
| |
| |
| |
|
| Pour déclarer un numérique |
|
| soit xMonNumérique = 0n0.0 |
|
|
|
| |
| |
| |
| |
| |
| |
| | |
| |