Cours complet pour apprendre à programmer en D


précédentsommairesuivant

24. auto et typeof

24-1. auto

Quand on a défini les variables de type File dans le chapitre précédent, on a répété le nom du type des deux côtés de l'opérateur = :

 
Sélectionnez
File file = File("enregistrements_etudiants", "w");

Cela semble redondant. C'est également lourd et sujet à erreurs, surtout quand le nom du type est plus long.

 
Sélectionnez
NomDeTypeTresLong var = NomDeTypeTresLong(/* ... */);

Heureusement, le nom du type sur le côté gauche de l'affectation n'est pas nécessaire parce que le compilateur peut inférer le type de la variable depuis l'expression à droite de l'affectation. Pour que le compilateur infère le type, le mot-clé auto peut être utilisé :

 
Sélectionnez
auto var = NomDeTypeTresLong(/* ... */);

auto peut être utilisé avec n'importe quel type même si le type n'est pas écrit explicitement du côté droit :

 
Sélectionnez
auto duree = 42;
auto distance = 1.2;
auto accueil = "Hello";
auto vehicule = JoliVelo("bleu");

Même si auto est l'abréviation de automatique, il ne vient pas d'inférence automatique des types. Il vient de classe automatique de stockage, qui est une notion à propos de la durée de vie des variables. auto est utilisé quand aucun autre indicateur n'est approprié. Par exemple, la définition suivante n'utilise pas auto :

 
Sélectionnez
immutable i = 42;

Dans ce code, le compilateur infère le type de i en immutable int (nous verrons immutable dans un chapitre ultérieur).

24-2. typeof

typeof donne le type d'une expression (ce qui comprend les variables simples, les objets, les littéraux…).

Ce qui suit est un exemple de comment typeof peut être utilisé pour spécifier un type sans l'écrire explicitement :

 
Sélectionnez
int valeur = 100;       // déjà défini comme 'int'
 
typeof(valeur) valeur2; // signifie "type de valeur"
typeof(100) valeur3;    // signifie "type du littéral 100"

Les deux dernières définitions sont équivalentes à ce qui suit :

 
Sélectionnez
int valeur2;
int valeur3;

Il est évident que typeof n'est pas nécessaire dans des situations comme celles-ci, quand les types sont déjà connus. Ce mot-clé est surtout utile dans les définitions de modèles (templates), que nous verrons dans des chapitres ultérieurs.

24-3. Exercices

Comme nous l'avons vu précédemment, le type des littéraux tels que 100 est int (et non short, long, ou n'importe quel autre type). Écrire un programme pour déterminer le type des littéraux à virgule flottante comme 1.2.

typeof() et .stringof sont utiles pour ce programme.

La solutionauto et typeof - Correction.


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+