1
0
mirror of https://github.com/adambard/learnxinyminutes-docs.git synced 2025-08-05 22:37:42 +02:00

[d/*] highlight as D

This commit is contained in:
Boris Verkhovskiy
2024-05-12 05:55:20 -06:00
parent 4f2054b2cb
commit 4be8105b1f
5 changed files with 37 additions and 38 deletions

View File

@@ -3,7 +3,6 @@ language: D
filename: learnd.d filename: learnd.d
contributors: contributors:
- ["Nick Papanastasiou", "www.nickpapanastasiou.github.io"] - ["Nick Papanastasiou", "www.nickpapanastasiou.github.io"]
--- ---
```d ```d

View File

@@ -164,7 +164,7 @@ class MyClass(T, U) {
} }
// setters // setters
// @property kann genauso gut am ende der Methodensignatur stehen // @property kann genauso gut am ende der Methodensignatur stehen
void data(T t) @property { void data(T t) @property {
_data = t; _data = t;
} }
@@ -211,7 +211,7 @@ void main() {
// Einfach eine Lambda-Funktion als Template Parameter übergeben // Einfach eine Lambda-Funktion als Template Parameter übergeben
// Es ist genau so gut möglich eine normale Funktion hier zu übergeben // Es ist genau so gut möglich eine normale Funktion hier zu übergeben
// Lambdas bieten sich hier aber an. // Lambdas bieten sich hier aber an.
auto num = iota(1, 101).filter!(x => x % 2 == 0) auto num = iota(1, 101).filter!(x => x % 2 == 0)
.map!(y => y ^^ 2) .map!(y => y ^^ 2)
.reduce!((a, b) => a + b); .reduce!((a, b) => a + b);

View File

@@ -8,7 +8,7 @@ translators:
lang: fr-fr lang: fr-fr
--- ---
```c ```d
// Commençons par un classique // Commençons par un classique
module hello; module hello;
@@ -30,7 +30,7 @@ D est activement développé par de nombreuses personnes très intelligents, gui
[Andrei Alexandrescu](https://fr.wikipedia.org/wiki/Andrei_Alexandrescu). [Andrei Alexandrescu](https://fr.wikipedia.org/wiki/Andrei_Alexandrescu).
Après cette petite introduction, jetons un coup d'oeil à quelques exemples. Après cette petite introduction, jetons un coup d'oeil à quelques exemples.
```c ```d
import std.stdio; import std.stdio;
void main() { void main() {
@@ -76,13 +76,13 @@ On peut définir de nouveaux types avec les mots-clés `struct`, `class`,
`union` et `enum`. Ces types sont passés à la fonction par valeur (ils sont copiés) `union` et `enum`. Ces types sont passés à la fonction par valeur (ils sont copiés)
De plus, on peut utiliser les templates pour rendre toutes ces abstractions génériques. De plus, on peut utiliser les templates pour rendre toutes ces abstractions génériques.
```c ```d
// Ici, 'T' est un paramètre de type. Il est similaire au <T> de C++/C#/Java. // Ici, 'T' est un paramètre de type. Il est similaire au <T> de C++/C#/Java.
struct LinkedList(T) { struct LinkedList(T) {
T data = null; T data = null;
// Utilisez '!' pour instancier un type paramétré. // Utilisez '!' pour instancier un type paramétré.
// Encore une fois semblable à '<T>' // Encore une fois semblable à '<T>'
LinkedList!(T)* next; LinkedList!(T)* next;
} }
@@ -141,7 +141,7 @@ une méthode qui peut se comporter comme une lvalue. On peut donc utiliser
la syntaxe des structures classiques (`struct.x = 7`) comme si il la syntaxe des structures classiques (`struct.x = 7`) comme si il
s'agissait de méthodes getter ou setter. s'agissait de méthodes getter ou setter.
```c ```d
// Considérons une classe paramétrée avec les types 'T' et 'U' // Considérons une classe paramétrée avec les types 'T' et 'U'
class MyClass(T, U) { class MyClass(T, U) {
T _data; T _data;
@@ -153,9 +153,9 @@ class MyClass(T, U) {
T _data; T _data;
U _other; U _other;
// Les constructeurs s'appellent toujours 'this'. // Les constructeurs s'appellent toujours 'this'.
this(T t, U u) { this(T t, U u) {
// Ceci va appeller les setters ci-dessous. // Ceci va appeller les setters ci-dessous.
data = t; data = t;
other = u; other = u;
} }
@@ -183,18 +183,18 @@ class MyClass(T, U) {
void main() { void main() {
auto mc = new MyClass!(int, string)(7, "seven"); auto mc = new MyClass!(int, string)(7, "seven");
// Importer le module 'stdio' de la bibliothèque standard permet // Importer le module 'stdio' de la bibliothèque standard permet
// d'écrire dans la console (les imports peuvent être locaux à une portée) // d'écrire dans la console (les imports peuvent être locaux à une portée)
import std.stdio; import std.stdio;
// On appelle les getters pour obtenir les valeurs. // On appelle les getters pour obtenir les valeurs.
writefln("Earlier: data = %d, str = %s", mc.data, mc.other); writefln("Earlier: data = %d, str = %s", mc.data, mc.other);
// On appelle les setter pour assigner de nouvelles valeurs. // On appelle les setter pour assigner de nouvelles valeurs.
mc.data = 8; mc.data = 8;
mc.other = "eight"; mc.other = "eight";
// On appelle les setter pour obtenir les nouvelles valeurs. // On appelle les setter pour obtenir les nouvelles valeurs.
writefln("Later: data = %d, str = %s", mc.data, mc.other); writefln("Later: data = %d, str = %s", mc.data, mc.other);
} }
``` ```
@@ -214,17 +214,17 @@ de premier ordre, les fonctions `pures` et les données immuables.
De plus, tout vos algorithmes fonctionels favoris (map, reduce, filter) De plus, tout vos algorithmes fonctionels favoris (map, reduce, filter)
sont disponibles dans le module `std.algorithm`. sont disponibles dans le module `std.algorithm`.
```c ```d
import std.algorithm : map, filter, reduce; import std.algorithm : map, filter, reduce;
import std.range : iota; // construit un intervalle excluant la dernière valeur. import std.range : iota; // construit un intervalle excluant la dernière valeur.
void main() { void main() {
// On veut un algorithme qui affiche la somme de la liste des carrés // On veut un algorithme qui affiche la somme de la liste des carrés
// des entiers paires de 1 à 100. Un jeu d'enfant ! // des entiers paires de 1 à 100. Un jeu d'enfant !
// On se contente de passer des expressions lambda en paramètre à des templates. // On se contente de passer des expressions lambda en paramètre à des templates.
// On peut fournir au template n'importe quelle fonction, mais dans notre // On peut fournir au template n'importe quelle fonction, mais dans notre
// cas, les lambdas sont pratiques. // cas, les lambdas sont pratiques.
auto num = iota(1, 101).filter!(x => x % 2 == 0) auto num = iota(1, 101).filter!(x => x % 2 == 0)
.map!(y => y ^^ 2) .map!(y => y ^^ 2)
.reduce!((a, b) => a + b); .reduce!((a, b) => a + b);
@@ -244,7 +244,7 @@ est de type A, comme si c'était une méthode de A.
J'aime le parallélisme. Vous aimez le parallélisme ? Bien sûr que vous aimez ça. J'aime le parallélisme. Vous aimez le parallélisme ? Bien sûr que vous aimez ça.
Voyons comment on le fait en D ! Voyons comment on le fait en D !
```c ```d
import std.stdio; import std.stdio;
import std.parallelism : parallel; import std.parallelism : parallel;
import std.math : sqrt; import std.math : sqrt;

View File

@@ -6,7 +6,7 @@ contributors:
lang: hi-in lang: hi-in
--- ---
```c ```d
//क्या आ रहा है पता है ... //क्या आ रहा है पता है ...
module hello; module hello;
@@ -27,7 +27,7 @@ D सक्रिय रूप से सुपर स्मार्ट लो
[आंद्रेई Alexandrescu](https://en.wikipedia.org/wiki/Andrei_Alexandrescu)। [आंद्रेई Alexandrescu](https://en.wikipedia.org/wiki/Andrei_Alexandrescu)।
ि तरह है ि सभ के हर, चल कुछ उदहरण पर करते हैं! ि तरह है ि सभ के हर, चल कुछ उदहरण पर करते हैं!
```c ```d
import std.stdio; import std.stdio;
void main() { void main() {
@@ -70,7 +70,7 @@ void main() {
मूल्य से र्य करने के ि ि कर रहे हैं ( नकल) और वर्ग के संदर्भ द्व ि कर रहे हैं इसके अल, मूल्य से र्य करने के ि ि कर रहे हैं ( नकल) और वर्ग के संदर्भ द्व ि कर रहे हैं इसके अल,
हम प्रक और पर करने के ि टेम्पलेट उपय कर सकते हैं! हम प्रक और पर करने के ि टेम्पलेट उपय कर सकते हैं!
```c ```d
// इधर, 'T' एक प्रकार पैरामीटर है। लगता है कि '&lt;+T&gt;' C++ / C/ Java से। // इधर, 'T' एक प्रकार पैरामीटर है। लगता है कि '&lt;+T&gt;' C++ / C/ Java से।
struct LinkedList(T) { struct LinkedList(T) {
T data = null; T data = null;
@@ -132,7 +132,7 @@ Classes की बात हो रही है , एक दूसरे के
के शब्द के संरचनओं क्य रचन (`structure.x = 7`) है के शब्द के संरचनओं क्य रचन (`structure.x = 7`) है
मनुष्य और सेटर तर (`object.setX(7)`) ! मनुष्य और सेटर तर (`object.setX(7)`) !
```c ```d
// Consider a class parameterized on types 'T' & 'U'. // Consider a class parameterized on types 'T' & 'U'.
class MyClass(T, U) { class MyClass(T, U) {
T _data; T _data;
@@ -206,7 +206,7 @@ void main() {
र्यत्मक एल्गिदम ( नक्श, िल्टर , कम करने और ित्र सकते हैं) र्यत्मक एल्गिदम ( नक्श, िल्टर , कम करने और ित्र सकते हैं)
अद्भुत `std.algorithm` ड्यूल में ! अद्भुत `std.algorithm` ड्यूल में !
```c ```d
import std.algorithm : map, filter, reduce; import std.algorithm : map, filter, reduce;
import std.range : iota; // builds an end-exclusive range import std.range : iota; // builds an end-exclusive range
@@ -234,7 +234,7 @@ UFCS के साथ, हम एक विधि के रूप में ए
मैं समनत हते समनत तरह और? ज़रूर तुम करन चल कुछ करते हैं! मैं समनत हते समनत तरह और? ज़रूर तुम करन चल कुछ करते हैं!
```c ```d
import std.stdio; import std.stdio;
import std.parallelism : parallel; import std.parallelism : parallel;
import std.math : sqrt; import std.math : sqrt;

View File

@@ -12,7 +12,7 @@ D - современный компилируемый язык общего на
который сочетает удобство, продуманный дизайн и высокую производительность. который сочетает удобство, продуманный дизайн и высокую производительность.
D - это С++, сделанный правильно. D - это С++, сделанный правильно.
```c ```d
// Welcome to D! Это однострочный комментарий // Welcome to D! Это однострочный комментарий
/* многострочный /* многострочный