« Programmation D » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 17 :
 
[[Catégorie:Langages de programmation]]
 
= Éléments avancés du langage =
 
== Autres mots-clés du langage D ==
 
Le langage D propose également des petits mots clés qui font sa richesse.
 
=== auto ===
 
Ce mot clé permet de déterminer automatiquement le type d'une variable. Par exemple :
 
<source lang="d">
auto file = new File("pathToTxt");
</source>
 
La variable file sera de type File.
 
=== assert ===
 
Ce mot clé permet d'effectuer des tests et si un échec se produit, il lève une exception (par exemple, on souhaite ici vérifier que maFonction() retourne 1).
 
<source lang="d">
assert(maFonction() == 1);
</source>
 
=== debug ===
 
Vous avez la possibilité de mettre des portions de code dans des blocks debug.
 
Utilisation :
 
<source lang="d">
debug(niveauDebug){
 
}
debug(debugIdentifiant){
 
}
</source>
 
Cas d'utilisation : ceci permet aux équipes de développement de travailler sur une version orientée développeur, où l'on pourra afficher de nombreux message d'information ainsi que des tests.
 
Ces portions de code seront compilées si et seulement si l'option -d-debug <niveauDebug/debugIdentifiant> est précisée.
 
<source lang="bash">
ldc *.d -d-debug 3
</source>
ou encore
<source lang="bash">
ldc *.d -d-debug graphicEngineTeam
</source>
 
Ainsi, on activera les portions de debug des blocks de niveau 3 ou dans l'autre cas, ceux dont l'identifiant est "graphicEngineTeam".
 
=== unittest ===
 
Comme vous le voyez, le langage D n'en finit pas d'intégrer de superbes fonctionnalités nativement ! Un [[w:Test unitaire|test unitaire]]<ref>Si vous n'êtes pas familier avec les tests, vous pourrez découvrir ces notions de développement dans [[Introduction au test logiciel]]</ref> permet de vérifier le comportement de votre code. Par exemple, vous avez une classe magicien avec des méthodes comme :
* lancerBouleDeFeu
* soin
* marcher
* couvrir
 
À la suite de la définition de la classe, on écrit un exemple d'utilisation, permettant de garantir son fonctionnement.
 
<source lang="d">
class Magicien : Humain
{
private:
 
public:
this(){
}
~this(){
}
lancerBouleDeFeu(){
}
marcher(){
}
couvrir(){
}
soin(){
}
}
unittest
{
Magicien gandalf = new Magicien();
gandalf.lancerBouleDeFeu();
gandalf.marcher();
gandalf.marcher();
gandalf.couvrir();
gandalf.soin();
}
</source>
 
Les tests unitaires sont compilés si l'option <tt>-unittest</tt> est utilisé au moment de la compilation
 
<source lang="bash">
ldc Magicien.d -unittest
</source>
 
=== version ===
 
Ce mot-clé permet de proposer différentes versions de votre logiciel (par exemple, une version version familiale, une version professionnelle, une version « Black », etc. Et bien au lieu d'avoir trois programmes différents, vous pouvez mettre le code spécifique à chaque version dans le block version correspondant, par exemple :
 
<source lang="d">
import tango.io.Stdout;
 
uint FAMILIALE = 0;
uint PROFESSIONNELLE= 1;
uint BLACK = 2;
 
void main()
{
Stdout("Bonjour").nl;
version(FAMILIALE)
{
Stdout("Bienvenue dans la version familiale").nl;
}
version(PROFESSIONNELLE)
{
Stdout("Bienvenue dans la version professionnelle").nl;
}
version(BLACK){
Stdout("Bienvenue dans la version black edition").nl;
}
}
</source>
 
Admettons que vous avez enregistré ce code dans le fichier version.d. Pour tester les cas :
 
1/ Sans spécifier la version :
<source lang="bash">
ldc version.d
./version
</source>
2/ Avec la version FAMILIALE :
<source lang="bash">
ldc -d-version FAMILIALE version.d
./version
</source>
3/ Avec la version PROFESSIONNELLE :
<source lang="bash">
ldc -d-version PROFESSIONNELLE version.d
./version
</source>
4/ Avec la version BLACK :
<source lang="bash">
ldc -d-version BLACK version.d
./version
</source>
5/ Utiliser 2 versions :
<source lang="bash">
ldc -d-version PROFESSIONNELLE -d-version BLACK version.d
./version
</source>
 
Il existe des versions automatiquement détectées et par conséquent réservées, comme :
* le type de compilateur:
** dmd identifiant -> DigitalMars
** ldc identifiant -> LDC
* l'architecture du processeur identifiant :
** x86
** X86_64
* la plateforme identifiant :
** linux
** Win32
** Windows
** darwin
** freebsd
** solaris
** Posix
** GNU
 
=== pragma ===
 
{{...}}
 
<source lang="d">
pragma(msg, "Bonjour");
</source>
 
= Outils =