- Présentation
- Déclaration
- Exemple
- Remplacer des tabulation par des espaces
- Extension du type Couleur
Une procédure d'extension permet d'ajouter des procédures WLangage "personnelles" aux types du langage (chaîne, date, couleur, etc.). Ces procédures peuvent ensuite être appelées comme des fonctions natives du WLangage. Le type de base du WLangage est alors "étendu". Pour indiquer qu'une procédure est une procédure d'extension, il est nécessaire que : - le premier paramètre utilise le type qui doit être "étendu",
- le prototype de la procédure comporte l'attribut <extension>.
Nouveauté 28 Exemple de déclaration d'une procédure d'extension du type chaîne :
PROCÉDURE MaProcédurePerso(s est une chaîne) <extension>
Remarques : - Les procédures d'extension apparaissent dans l’assistance de code (complétion) du type étendu.
- Les procédures d'extension ne peuvent pas être définies sur le type Booléen, Entier, Réel, Numérique, ... (tous les types permettant de manipuler des valeurs numériques).
- Seuls les types du WLangage peuvent être étendus.
- Seules les procédures globales peuvent avoir l'attribut <extension>.
- Si la procédure d'extension surcharge une fonction WLangage, la syntaxe classique de la fonction WLangage sera également surchargée. Par exemple, la création d'une procédure d'extension "Formate" sur le type chaîne surchargera la fonction <Chaîne>.Formate et la fonction ChaineFormate.
- Il est possible d'enchainer les appels à des procédures d'extension.
Remplacer des tabulation par des espaces Procédure permettant de remplacer les tabulations par des espaces :
PROCÉDURE RemplaceTABParXEspace(s est une chaîne, n est un entier) <extension> : chaîne RENVOYER s.Remplace(TAB, Répète(" ", n))
L'appel de la procédure d'extension est le suivant :
sTexte est une chaîne = TAB + "XXX" Trace(sTexte) // <TAB>XXX Trace(sTexte.RemplaceTABParXEspace(4)) // XXX
Extension du type Couleur Procédure permettant d'étendre le type Couleur, afin de récupérer une couleur de texte qui s'affichera lisiblement sur une couleur de fond donnée.
PROCÉDURE CouleurLisible(CouleurOrigine est une Couleur) <extension> : Couleur nLuminosité est un entier rLuminance est un réel CouleurRetour est une Couleur // Calcul de la luminance de la couleur passée en paramètre rLuminance = 1 - (0.299 * CouleurOrigine..Rouge + ... 0.587 * CouleurOrigine..Vert + 0.114 * CouleurOrigine..Bleu)/255 // En fonction de la luminance, la couleur d'écriture doit avoir une faible ou une forte luminosité SI rLuminance < 0.5 ALORS // Faible luminosité nLuminosité = 12 SINON // Forte luminosité nLuminosité = 88 FIN // La couleur renvoyée conserve la tonalité et la saturation CouleurRetour = TSL(CouleurTeinte(CouleurOrigine), ... CouleurSaturation(CouleurOrigine), nLuminosité) RENVOYER CouleurRetour
L'appel de la procédure d'extension est le suivant :
// Tableau de couleurs tabCouleursHTML est un tableau de chaînes tabCouleursHTML.Ajoute("#F48FB1") tabCouleursHTML.Ajoute("#C2185B") tabCouleursHTML.Ajoute("#64B5F6") tabCouleursHTML.Ajoute("#1565C0") tabCouleursHTML.Ajoute("#81C784") tabCouleursHTML.Ajoute("#2E7D32") MaCouleur est une Couleur // Récupère une couleur aléatoire MaCouleur = HTMLVersRVB(tabCouleursHTML[Hasard(1, tabCouleursHTML..Occurrence)] ) // Applique la couleur initiale en couleur de fond LIB_TestCouleurFond.CouleurFond = MaCouleur // Applique une couleur lisible en couleur de texte LIB_TestCouleurFond.Couleur = MaCouleur.CouleurLisible()
Liste des exemples associés :
|
Exemples didactiques : ProceduresDExtension
[ + ] Cet exemple montre l'utilisation de l'attribut <extension>, pour ajouter des fonctionnalités sur les types du WLangage.
|
Documentation également disponible pour…
|
|
|
|