|
|
|
|
|
- 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
L'inférence de type permet de simplifier la déclaration des variables dans le cas où le compilateur peut déduire automatiquement le type de la variable. Le principe est simple. Le type de la variable est alors déduit en fonction de la valeur qui est affectée à la variable. L'affectation de la valeur peut être réalisée : 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.
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
// 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 PROCÉDURE 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.
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
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|