|
|
|
|
|
- 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
soit Ville = "Montpellier"
soit (x, y) = (1, "A")
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 :
PROCÉDURE MaProc(Param1)
soit MaVar = Param1
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
soit clClient <- clMonClient
tabPrix est un tableau de 5 monétaires
tabPrix[1] = 500.00
tabPrix[2] = 250
soit tPrix <- tabPrix
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|