PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • 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
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
Présentation
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 :
Versions 20 et supérieures
WEBDEV - Code Navigateur Cette fonctionnalité est disponible en code navigateur.
WEBDEV - Code Navigateur Seule l'inférence de type par copie est disponible.
Nouveauté 20
WEBDEV - Code Navigateur Cette fonctionnalité est disponible en code navigateur.
WEBDEV - Code Navigateur Seule l'inférence de type par copie est disponible.
WEBDEV - Code Navigateur Cette fonctionnalité est disponible en code navigateur.
WEBDEV - Code Navigateur Seule l'inférence de type par copie est disponible.
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érieures
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.
Nouveauté 19
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.
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 valeurType utilisé
booléenbooléen
entier sans signe sur 1 octetentier
entier sans signe sur 2 octetsentier
entier sans signe sur 4 octetsentier sans signe sur 4 octets
entier sans signe sur 8 octetsentier sans signe sur 8 octets
entier sur 1 octetentier
entier sur 2 octetsentier
entierentier
entier sur 8 octetsentier sur 8 octets
monétairemonétaire
décimaldécimal
réel sur 4 octetsréel sur 4 octets
réelréel
caractèrecaractère
chaînechaîne (Ansi ou Unicode)
chaîne sur Nchaîne (Ansi ou Unicode)
chaîne Ansichaîne Ansi
chaîne Ansi sur Nchaîne Ansi
chaîne Unicodechaîne Unicode
chaîne Unicode sur Nchaîne Unicode
chaîne ASCIIZ sur Nchaîne Ansi
chaîne Fixe sur Nchaîne Ansi
chaîne Pascal sur Nchaîne Ansi
bufferbuffer
datedate
heureheure
dateheuredateheure
duréedurée
policepolice
procédureprocé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érieures
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.
Nouveauté 19
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.
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 MonClient
soit clClient <- clMonClient // type classe, oClient pointe sur l'objet MonClient

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
Version minimum requise
  • Version 18
Documentation également disponible pour…
Commentaires
Pour déclarer un numérique
soit xMonNumérique = 0n0.0
Alexandre LECLERC
07 juin 2013