the d programming language - jérémie roquet · the d programming language the tools the libraries...
TRANSCRIPT
![Page 1: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/1.jpg)
The D Programming Language
The D2azel Team
EPITA
July, 15�th 2007
The D2azel Team The D Programming Language 1 / 113
![Page 2: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/2.jpg)
Licence
This work is licenced under the Creative Commons Attribution-Share Alike 3.0 License.
The D2azel Team The D Programming Language 2 / 113
![Page 3: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/3.jpg)
Version history
Version history
1.1 - Jérémie Roquet (July 15th 2007)
1.0 - The D2azel team (July 12th 2007)
0.2 - Jérémie Roquet (July 10th 2007)
0.1 - Paul Baudron (June 28th 2007)
The D2azel Team The D Programming Language 3 / 113
![Page 4: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/4.jpg)
Introduction
Subject
The D programming language
The tools
The libraries
Presentation
A short introduction to basic concepts
To make you discover a cool language
Not a coding demonstration
The D2azel Team The D Programming Language 4 / 113
![Page 5: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/5.jpg)
Outline
Presentation
The language
The tools
Language
Basic features
Comparison with other languages
Libraries
What already exists
What is comming
The D2azel Team The D Programming Language 5 / 113
![Page 6: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/6.jpg)
Presentation Garbage Collection Compilation Developement
Part I
Presentation
The D2azel Team The D Programming Language 6 / 113
![Page 7: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/7.jpg)
Presentation Garbage Collection Compilation Developement
Presentation
Introduction
History
by Walter Bright of Digital Mars
Appeared in 1999
A stable version, 1.0, was released on January 2, 2007
Licence
Proprietary
Open source
The D2azel Team The D Programming Language 7 / 113
![Page 8: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/8.jpg)
Presentation Garbage Collection Compilation Developement
Presentation
Features
Features
Compiled
Imperative
object-oriented
Metaprogramming
Garbage collector
In�uenced by C (1972), C++ (1985), C# (2001), Java (1995),Ei�el (1986)
The D2azel Team The D Programming Language 8 / 113
![Page 9: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/9.jpg)
Presentation Garbage Collection Compilation Developement
Presentation
Why D?
Why D?
To combine the power and high performance of C and C++with the programmer productivity
Needs of quality assurance, documentation, management,portability and reliability.
The D2azel Team The D Programming Language 9 / 113
![Page 10: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/10.jpg)
Presentation Garbage Collection Compilation Developement
Garbage Collection
Garbage Collection
Methods for allocating memory in D
Static data, allocated in the default data segment
Stack data, allocated on the CPU program stack
Garbage collected data, allocated dynamically on the garbagecollection heap
The D2azel Team The D Programming Language 10 / 113
![Page 11: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/11.jpg)
Presentation Garbage Collection Compilation Developement
Garbage Collection
Garbage Collection
Garbage collected programs can be faster
Most destructors are empty (so they are not executed)
No special mechanism to establish if an exception happens
Less code necessary to manage memory (smaller programs)
When memory is not tight, the program runs at full speed
Modern garbage collectors do heap compaction
The D2azel Team The D Programming Language 11 / 113
![Page 12: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/12.jpg)
Presentation Garbage Collection Compilation Developement
Garbage Collection
Garbage Collection
Other advantages
No memory leaks
Few hard-to-�nd pointer bugs
Faster to develop and debug
The D2azel Team The D Programming Language 12 / 113
![Page 13: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/13.jpg)
Presentation Garbage Collection Compilation Developement
Garbage Collection
Garbage Collection
Downsides
The program can arbitrarily pause
The time it takes for a collection to run is not bounded
Programs must carry around with them the garbage collectionimplementation
The D2azel Team The D Programming Language 13 / 113
![Page 14: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/14.jpg)
Presentation Garbage Collection Compilation Developement
Garbage Collection
Garbage Collection
Where/When is it run?
In a special thread
How it works?
Looking for all pointers �roots�
Recursively scanning all allocated memory
Freeing all memory that has no active pointers to it
Possibly compacting the remaining used memory
The D2azel Team The D Programming Language 14 / 113
![Page 15: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/15.jpg)
Presentation Garbage Collection Compilation Developement
Compilation
Compilers
Two implementations
Digital Mars DMD (Win32 and x86 Linux)
GCC D Compiler (Windows, MAC OS X and Linux)
The D2azel Team The D Programming Language 15 / 113
![Page 16: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/16.jpg)
Presentation Garbage Collection Compilation Developement
Compilation
Linkage
Programs:
Are linked with gcc
Can be linked with C libraries...
The D2azel Team The D Programming Language 16 / 113
![Page 17: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/17.jpg)
Presentation Garbage Collection Compilation Developement
Compilation
dsss
Build system
Package management
Dependance management
The D2azel Team The D Programming Language 17 / 113
![Page 18: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/18.jpg)
Presentation Garbage Collection Compilation Developement
Developement
Editors
Editors
Emacs
Eclipse
...
The D2azel Team The D Programming Language 18 / 113
![Page 19: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/19.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Part II
Language
The D2azel Team The D Programming Language 19 / 113
![Page 20: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/20.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Hello world
The code
import s t d . s t d i o ;
void main ( char [ ] [ ] a r g s ){
w r i t e f l n ( " He l l o World ! " ) ;}
Some explanations
Import the write�n function
Implement the program main function
Write "Hello World !" to standard output
The D2azel Team The D Programming Language 20 / 113
![Page 21: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/21.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Comments
Single line comments
// This i s a comment
Multi line comments
/∗ This i s amu l t i l i n e comment ∗/
Multi line nested comments
/+ This i s a mu l t i l i n e/+ Nested +/comment +/
The D2azel Team The D Programming Language 21 / 113
![Page 22: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/22.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Documentation
Single line documentation
/// This i s a documentat ion
Multi line documentation
/∗∗ This i s amu l t i l i n e documentat ion ∗/
Multi line nested documentation
/++ This i s a mu l t i l i n e/+ Nested +/documentat ion +/
The D2azel Team The D Programming Language 22 / 113
![Page 23: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/23.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Documentation
Standard sections
Generate standard documentation
Authors, bugs, date, deprecated, history, license, version
Code examples
Return value, exceptions
The D2azel Team The D Programming Language 22 / 113
![Page 24: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/24.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Modules
Module declaration
Declaration
module moduleName ;module packageName . moduleName ;
Implicit scope
Compiled only once
May contain any type of code
The D2azel Team The D Programming Language 23 / 113
![Page 25: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/25.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Import
Import
Simple module importation
import moduleName ;import module1 ,
module2 ,module3 ;
No �le inclusion
No header parsing
Load symbols from binary or look in memory
The D2azel Team The D Programming Language 24 / 113
![Page 26: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/26.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Import
Import
Public module importation
pub l i c import moduleName ;
Transfer symbols
The D2azel Team The D Programming Language 24 / 113
![Page 27: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/27.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Import
Import
Static module importation
s t a t i c import moduleName ;
Force full namespace quali�cation
Prevent name collisions
Access to current module
. myFunction ( ) ;
The D2azel Team The D Programming Language 24 / 113
![Page 28: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/28.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Import
Import
Module importation & renaming
import moduleName = newName ;
Prevent name collisions
Ease dependancies change
The D2azel Team The D Programming Language 24 / 113
![Page 29: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/29.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Import
Import
Selective module importation
import moduleName : elementName ;
Prevent name collisions
Selective module importation & renaming
import moduleName : elementName = newElementName ;
The D2azel Team The D Programming Language 24 / 113
![Page 30: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/30.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Mixin
Mixin
Simple module mix
mixin (moduleName ) ;
Code factorisation
No �le inclusion
No header parsing
Load symbols from binary or look in memory
The D2azel Team The D Programming Language 25 / 113
![Page 31: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/31.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Simplest types
Simplest types
Void
Means no type
Bool
Always initialized to false
The D2azel Team The D Programming Language 26 / 113
![Page 32: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/32.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Integers
Integers
Declaration
i n t i = 42 ; // Decimali n t j = 0b101010 ; // B ina ryi n t k = 052 ; // Octa li n t l = 0x2A ; // Hexadec imal
With underscores
i n t i = 65_535 ; // 65535i n t j = 0x34_32 ; // [ 0 , 0 , ' 4 ' , ' 2 ' ]
The D2azel Team The D Programming Language 27 / 113
![Page 33: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/33.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Integers
Integers
And also
byte, ubyte
short, ushort
int, uint
long, ulong
cent, ucent
Always initialized to 0
The D2azel Team The D Programming Language 27 / 113
![Page 34: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/34.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Floating point numbers
Floating point numbers
Di�erent types
�oat
double
real
Always initialized to NaN
The D2azel Team The D Programming Language 28 / 113
![Page 35: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/35.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Floating point numbers
Floating point numbers
Decimal exponential notation
f l o a t f = 1 .0 e3 ; // f = 1000f l o a t g = 1 .0 e+3; // g = 1000f l o a t h = 1 .0 e−3; // h = 0.001
Hexadecimal exponential notation
f l o a t f = 0x1 . Ap3 ; // f = 13f l o a t g = 0x1 . Ap+3; // g = 13f l o a t h = 0x1 . Ap−3; // h = 13/64
The D2azel Team The D Programming Language 28 / 113
![Page 36: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/36.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Imaginary numbers
Imaginary numbers
Di�erent types
i�oat
idouble
ireal
Always initialized to NaN * 1.0i
The D2azel Team The D Programming Language 29 / 113
![Page 37: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/37.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Complex numbers
Complex numbers
Di�erent types
c�oat
cdouble
creal
Always initialized to NaN * (1.0 + 1.0i)
The D2azel Team The D Programming Language 30 / 113
![Page 38: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/38.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Characters
Characters
Di�erent types
char
wchar
dchar
char initialized to 0xFF
wchar initialized to 0xFFFF
dchar initialized to 0x0000FFFF
The D2azel Team The D Programming Language 31 / 113
![Page 39: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/39.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Pointers
Pointers
Declaration
i n t i = 42 ;i n t ∗ p i ; // i n t p o i n t e rp i = &i ; // p i p o i n t s to ii n t j = ∗ p i ; // j = 42
Multiple variable de�nition
i n t i , j ; // I n t e g e r si n t i , ∗ j ; // Er ro r , not the same typei n t ∗ i , j ; // Po i n t e r s to i n t e g e r
Always initialized to NULL
The D2azel Team The D Programming Language 32 / 113
![Page 40: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/40.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Arrays
Arrays
Static array
i n t [ 4 2 ] tab ; // Array o f 42 e l ement si n t tab [ 4 2 ] ; // Works a l s o
Fields initialized to the default type value
Limited to 16Mib
Dynamic array
i n t [ ] tab ; // Empty dynamic a r r a yi n t tab [ ] ; // Works a l s o
Initialized with length of 0
The D2azel Team The D Programming Language 33 / 113
![Page 41: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/41.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Arrays
Arrays
Jagged array
i n t [ ] [ ] tab ; // Empty mat r i x
Rows can be of di�erent lengths
Multidimensional array
i n t [ 3 ] [ 3 ] tab ; // F i xed s i z e mat r i xi n t [ 3 , 3 ] tab ; // Work a l s o
Contiguous in memory
The D2azel Team The D Programming Language 33 / 113
![Page 42: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/42.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Arrays
Arrays
Properties
i n t [ 4 2 ] tab ;i n t l = tab . l e n gh t ; // G i v e s the a r r a y l e n g t h
The D2azel Team The D Programming Language 33 / 113
![Page 43: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/43.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Complex constructions
Complex constructions
C++
// Array o f 42 p o i n t e r s to a r r a y s o f p o i n t e r s to i n ti n t ∗ (∗ i [ 4 2 ] ) [ ] ;
D
// Array o f 42 p o i n t e r s to a r r a y s o f p o i n t e r s to i n ti n t ∗ [ ] ∗ [ 4 2 ] i ;i n t ∗ (∗ i [ 4 2 ] ) [ ] ; // Works a l s o
The D2azel Team The D Programming Language 34 / 113
![Page 44: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/44.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Strings
Strings
Strings ?
There is no string in D
We use characters arrays instead
Declaration
char [ ] s t r = " to to " ; // This i s a UTF−8 s t r i n gwchar [ ] s t r 2 = " h e l l o "w; // This i s a UTF−16 s t r i n gdchar [ ] s t r 3 = "42"d ; // This i s a UTF−32 s t r i n gchar [ ] s t r x = x"FFAA" ; // This i s a hexadec ima l l i t e r a l
The D2azel Team The D Programming Language 35 / 113
![Page 45: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/45.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Strings
Strings
Multiple lines strings
char [ ] lo remIpsum = "Lorem ipsum do l o r s i t amet ,c o n s e t e t u r s a d i p s c i n g e l i t r .Sed diam nonumy ei rmod tempor i n v i d u n t utl a b o r e e t d o l o r e magna a l iquyam e r a t .Sed diam vo l up tua . At ve ro eos e t accusam etj u s t o duo d o l o r e s e t ea rebum .S t e t c l i t a kasd gubergren , no sea s anc t u s e s t . " ;
The D2azel Team The D Programming Language 35 / 113
![Page 46: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/46.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Strings
Strings
Special characters in C++
char h e l l o [ ] = " He l l o wor ld !\ n" ;char r egexp [ ] = " \" [^\\\\ ]∗ (\\\\ . [^\\\\ ]∗ )∗\" " ;
Special characters in D
char [ ] h e l l o = " He l l o wor ld ! " \n ;char [ ] r egexp = \" r " [ ^ \ \ ] ∗ ( \ \ . [ ^ \ \ ] ∗ ) ∗ " \" ;cha r [ ] r egexp = \" ` [ ^ \ \ ] ∗ ( \ \ . [ ^ \ \ ] ∗ ) ∗ ` \" ;
The D2azel Team The D Programming Language 35 / 113
![Page 47: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/47.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Associative arrays
Associative arrays
Declaration
// I n t e g e r a s s o c i a t i v e a r r a y i ndexed by s t r i n g sf l o a t [ char [ ] ] p r i c e ;// Add an e x p e n s i v e f r u i t to the a r r a yp r i c e [ " app l e " ] = 2 . 4 0 ;p r i c e . remove ( " app l e " ) ; // Remove i t
The D2azel Team The D Programming Language 36 / 113
![Page 48: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/48.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Functions & delegates
Functions & delegates
Functions
// Funct i on t a k i n g an a r r a y and r e t u r n i n g an i n t e g e ri n t funct ion ( i n t [ ] ) myFunction ;// Dummy f u n c t i o ni n t t o t o ( i n t [ ] t i t i ){ return t i t i [ l e n g t h − 1 ] }myFunction = &to to ; // r e f e r s to t o t oi n t i = myFunction ( [ 4 2 ] ) ; // i = 42// The C f u n c t i o n p o i n t e r s yn tax works a l s oi n t (∗ ano the rFunc t i on ) ( i n t [ ] ) ;
Delegates
Works also for nested functions or non-static methods
The D2azel Team The D Programming Language 37 / 113
![Page 49: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/49.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Functions & delegates
Functions & delegates
Declaration
// Funct i on t a k i n g an a r r a y and r e t u r n i n g an i n t e g e ri n t delegate ( i n t [ ] ) myFunction ;void ou t e rFunc t i o n{
// Dummy i n n e r f u n c t i o ni n t t o t o ( i n t [ ] t i t i ){ return t i t i [ 0 ] }myFunction = &to to ; // r e f e r s to t o t oi n t i = myFunction ( [ 4 2 ] ) ; // i = 42
}
The D2azel Team The D Programming Language 37 / 113
![Page 50: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/50.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Arrays manipulation
Arrays manipulation
Initialization
i n t [ 4 2 ] four tyTwos ; // Array o f 42 i n t e g e r sfour tyTwos [ ] = 42 ; // Set a l l f i e l d s to 42four tyTwos [ 2 1 . . 4 2 ] = 0 ; // Set f i e l d s 21 to 42 to 0four tyTwos [ 3 0 . . $ ] = 21 ; // Set l a s t f i e l d s to 21
Array assignement
// tab [ 2 1 ] = 42 , tab [ 2 2 ] = 21i n t [ 4 2 ] tab = [ 2 1 : 4 2 , 2 1 ] ;
The D2azel Team The D Programming Language 38 / 113
![Page 51: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/51.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Arrays manipulation
Arrays manipulation
Copy
i n t [ 4 2 ] f i r s t ;i n t [ 4 2 ] second ;f i r s t = second ; // f i r s t and second a r e the samef i r s t [ ] = second [ ] // copy second i n t o f i r s tf i r s t [ 0 . . 2 ] = second [ 2 . . 4 ] // copy two f i e l d s
Slicing
i n t [ 4 2 ] f i r s t ;i n t [ ] second ;// second has the 21 f i r s t e l ement s o f f i r s tsecond = f i r s t [ 0 . . 2 1 ] ;
The D2azel Team The D Programming Language 38 / 113
![Page 52: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/52.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Arrays manipulation
Arrays manipulation
Concatenation
i n t [ ] f i r s t ;i n t [ ] second ;i n t [ ] t h i r d ;t h i r d = f i r s t ~ second ;f i r s t ~= second ;
The D2azel Team The D Programming Language 38 / 113
![Page 53: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/53.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Arrays manipulation
Arrays manipulation
Properties
i n t [ ] tab ;tab . s o r t ( ) ;tab . r e v e r s e ( ) ;tab . dup ( ) ;++tab . l e n g t h ;
The D2azel Team The D Programming Language 38 / 113
![Page 54: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/54.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Arrays manipulation
Arrays manipulation
Functions taking arrays
i n t [ ] s t a c k ;void push ( i n t [ ] tab , i n t e l t ){
++tab . l e n g t h ;tab [ l e n g t h − 1 ] = e l t ;
}tab . push ( 4 2 ) ;
The D2azel Team The D Programming Language 38 / 113
![Page 55: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/55.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
opNeg
opNeg
Usage
−myVar ;
The D2azel Team The D Programming Language 39 / 113
![Page 56: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/56.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Binary operators
Binary operators
Usage
a + b ; a − b ;a ∗ b ; a / b ;a % b ;a & b ; a | b ;a ~ b ;a << b ;a >> b ; a >>> b ;
opAdd, opSub, opMul, opDiv, opMod
opAnd, opOr, opXor
opCat
opShl, opShr, opUShr
The D2azel Team The D Programming Language 40 / 113
![Page 57: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/57.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Comparison operators
Comparison operators
Usage
a == b ;a != b ;a < b ;a > b ;a <= b ;a >= b ;
opEquals
opComp
The D2azel Team The D Programming Language 41 / 113
![Page 58: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/58.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Reverse binary operators
Reverse binary operators
Usage
a + b ; a − b ;a ∗ b ; a / b ;a % b ;a & b ; a | b ;a ~ b ;a << b ;a >> b ; a >>> b ;
opAdd_r, opSub_r, opMul_r, opDiv_r, opMod_r
opAnd_r, opOr_r, opXor_r
opCat_r
opShl_r, opShr_r, opUShr_r
The D2azel Team The D Programming Language 42 / 113
![Page 59: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/59.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Floating point operators
Floating point operators
Usage
a == b ;a != b ;a !< b ;a !> b ;a !<= b ;a !>= b ;a != b ;a <> b ;a !<> b ;a <>= b ;a !<>= b ;
Builtin NaN handling
The D2azel Team The D Programming Language 43 / 113
![Page 60: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/60.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
opAssign
opAssign
Usage
a = b ;a += b ; // ++a −= b ; // −−a ∗= b ; a /= b ;a %= b ;a &= b ; a |= b ;a ~= b ;a <<= b ;a >>= b ; a >>>= b ;
Any operator, su�xed by "Assign"
Example : opAddAssign
The D2azel Team The D Programming Language 44 / 113
![Page 61: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/61.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
opCast
opCast
Usage
c l a s s MyClass{
MyType opCast ( ){
return myValue ;}
}cast (MyType) myVar ;
Allow complex conversions
Almost transparent to the user
The D2azel Team The D Programming Language 45 / 113
![Page 62: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/62.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
opCall
opCall
Usage
MyClass f ;f (myArg ) ;
Allow function objects (functors)
The D2azel Team The D Programming Language 46 / 113
![Page 63: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/63.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
opIndex, opIndexAssign
opIndex, opIndexAssign
opIndex
c l a s s MyClass{
MyType op Index (MyType index1 , MyType i ndex2 ){
return myValue ;}
}myVar [ i , j ] ;
The D2azel Team The D Programming Language 47 / 113
![Page 64: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/64.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
opIndex, opIndexAssign
opIndex, opIndexAssign
opIndexAssign
c l a s s MyClass{
MyType op IndexAs s i gn (MyType va lue ,MyType index1 , MyType index2 )
{}
}myVar [ i , j ] = myValue ;
The D2azel Team The D Programming Language 47 / 113
![Page 65: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/65.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
opSlice, opSliceAssign
opSlice, opSliceAssign
opSlice
c l a s s MyClass{
MyType o pS l i c e (MyType s t a r t , MyType end ){
return mySub ;}
}myVar [ i . . j ] ;
The D2azel Team The D Programming Language 48 / 113
![Page 66: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/66.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
opSlice, opSliceAssign
opSlice, opSliceAssign
opSliceAssign
c l a s s MyClass{
MyType o pS l i c eA s s i g n (MyType va lue ,MyType s t a r t , MyType end )
{}
}myVar [ i . . j ] = myValue ;
The D2azel Team The D Programming Language 48 / 113
![Page 67: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/67.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
opIn, opIn_r
opIn, opIn_r
Usage
a i n b ;// Not ye t implementeda ! i n b ;
determine if an object is in an array
may be rede�ned
The D2azel Team The D Programming Language 49 / 113
![Page 68: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/68.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
is operator
is operator
Usage
a i s b ;a ! i s b ;
determine if a reference is null
determine if two references are equals
cannot be rede�ned
The D2azel Team The D Programming Language 50 / 113
![Page 69: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/69.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
is operator
is operator
is type
s t a t i c i f ( i s (T [ ] ) )// Something
type category
The D2azel Team The D Programming Language 50 / 113
![Page 70: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/70.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
is operator
is operator
is type specialisation
s t a t i c i f ( i s (T: BaseType ) )// Something
type hierarchy
The D2azel Team The D Programming Language 50 / 113
![Page 71: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/71.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
is operator
is operator
is type identity
s t a t i c i f ( i s (T == MyType ) ) // . . .s t a t i c i f ( i s (T == super ) ) // . . .s t a t i c i f ( i s (T == c l a s s ) ) // . . .s t a t i c i f ( i s (T == funct ion ) ) // . . .s t a t i c i f ( i s (T == return ) ) // . . .
type hierarchy
The D2azel Team The D Programming Language 50 / 113
![Page 72: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/72.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Goto
Goto
Usage
myLabel :// Many u s e f u l t h i n g sgoto myLabel ;
Quick and easy
Dirty
The D2azel Team The D Programming Language 51 / 113
![Page 73: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/73.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
If else
If else
Usage
i f ( c o n d i t i o n ){
// Something}e l s e
{// Something e l s e
}
'condition' must be a boolean
The D2azel Team The D Programming Language 52 / 113
![Page 74: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/74.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Switch
Switch
Usage
switch ( token ){
case " i f " :p a r s e I f ( ) ;goto case " e l s e " ;
case " e l s e " :p a r s e E l s e ( ) ;break ;
defau l t :throw new EUnknownToken ( ) ;
}
Works also on arrays
The D2azel Team The D Programming Language 53 / 113
![Page 75: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/75.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
While loop
While loop
Usage
whi le ( c o n d i t i o n ){
break ;continue ;
}
Do ... while
do
{break ;continue ;
} whi le ( c o n d i t i o n )
The D2azel Team The D Programming Language 54 / 113
![Page 76: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/76.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
For loop
For loop
Usage
f o r ( i n i t i a l i z a t i o n ; c o n d i t i o n ; mo d i f i c a t i o n ){
break ;continue ;
}
The D2azel Team The D Programming Language 55 / 113
![Page 77: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/77.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Foreach loop
Foreach loop
Usage
char [ ] s t r = " bon jou r " ;foreach ( char c ; s t r ){
w r i t e f l n ( "%c" , c ) ;}
foreach_reverse
The same, but in reverse order
The D2azel Team The D Programming Language 56 / 113
![Page 78: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/78.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Foreach loop
Foreach loop
With additional parameter
char [ ] s t r = " bon jou r " ;foreach ( u int i , char c ; s t r ){
w r i t e f l n ( "%u i −> %c" , i , c ) ;}
The D2azel Team The D Programming Language 56 / 113
![Page 79: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/79.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Foreach loop
Foreach loop
On associative arrays
f l o a t [ char [ ] ] p r i c e s ;p r i c e s [ " app l e " ] = 2 . 4 0 ;foreach ( char [ ] i tem , f l o a t p r i c e ; p r i c e s ){
w r i t e f l n ( "%s −> %f " , item , p r i c e ) ;}
The D2azel Team The D Programming Language 56 / 113
![Page 80: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/80.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Foreach loop
Foreach loop
On objects
c l a s s myObject{
i n t opApply ( i n t delegate ( r e f i n t ) myFunc ){
// App l i e s myFunc to each e lement}
}foreach ( i n t e l t , myObject o ){
// Do someth ing wi th e l t}
The D2azel Team The D Programming Language 56 / 113
![Page 81: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/81.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Foreach loop
Foreach loop
On delegates
void app l y ( void delegate ( i n t ) func ){
func ( 4 2 ) ;func ( 2 1 ) ;
}foreach ( i n t e l t , app l y ( void delegate ( i n t ) ) ){
w r i t e f l n ( "%i " , e l t ) ;}
The D2azel Team The D Programming Language 56 / 113
![Page 82: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/82.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Named loops
Named loops
Named while with named break
oute rLoop : whi le ( c o n d i t i o n ){
inne rLoop : f o r ( u int i = 0 ; i < 42 ; ++i )break oute rLoop ;
}
Named for with named continue
oute rLoop : f o r ( u int i = 0 ; i < 42 ; ++i ){
inne rLoop : whi le ( c o n d i t i o n )continue oute rLoop ;
}
The D2azel Team The D Programming Language 57 / 113
![Page 83: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/83.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Static scopes
Static scopes
Using static if
s t a t i c i f ( c o n d i t i o n )i n t myVar ;
e l s e
f l o a t myVar ;
Evaluated at compile time (like # if in C++)
Has access to D values (templates. . . )
The D2azel Team The D Programming Language 58 / 113
![Page 84: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/84.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Virtual functions
Virtual functions
Declaration of a virtual function in C++
v i r t u a l myMethod ( ) ;
Non virtual by default
Declaration of a �nal function in D
f i n a l myMethod ( ){
// Cannot be o v e r r i d e n u n l e s s p r i v a t e}
Virtual by default
The D2azel Team The D Programming Language 59 / 113
![Page 85: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/85.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Arguments policies
Default policies
Scalars, unions, pointers and structs
Value types
Passed as copy by default
Arrays and objects
Reference types
Passed as reference by default
The D2azel Team The D Programming Language 60 / 113
![Page 86: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/86.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Arguments policies
Explicit policies
in, out policies
MyType myFunction ( i n MyType myIn , out MyType myOut){}
Safer argument policy
Force references
The D2azel Team The D Programming Language 61 / 113
![Page 87: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/87.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Arguments policies
Explicit policies
ref, inout policies
MyType myFunction ( r e f MyType myRef ,inout MyType myInOut )
{}
Force reference
ref is deprecated
The D2azel Team The D Programming Language 61 / 113
![Page 88: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/88.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Arguments policies
Explicit policies
lazy policy
MyType myFunction ( l azy myArg ){}myFunction (myVar++);
Evaluated if necessary
Optimized
Safe
The D2azel Team The D Programming Language 61 / 113
![Page 89: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/89.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Forward references
Forward references
No need to declare before use
void f i r s t ( ){
second ( ) ;}void second ( ){}
The D2azel Team The D Programming Language 62 / 113
![Page 90: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/90.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Function literals
Function literals
No need to declare before use
void myFunction ( void delegate ( i n t ) d ){
i n t a = d ( 4 2 ) ;}myFunction ( delegate ( i n t i ) { return i + 1 } ) ;
The D2azel Team The D Programming Language 63 / 113
![Page 91: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/91.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Nested functions
Nested functions
Usage
MyType myOuterFunct ion ( ){
MyType myVar ;MyType myInne rFunct ion ( ){}
}
Access to outer function scope
The D2azel Team The D Programming Language 64 / 113
![Page 92: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/92.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Variadic functions
Variadic functions
Usage
MyType myFunction ( . . . ){}MyType myFunction ( i n t [ ] myArg . . . ){}
Variable arguments count
The D2azel Team The D Programming Language 65 / 113
![Page 93: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/93.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Extern functions
Extern functions
Usage
extern (C) p r i n t f ( ) ;extern (D) w r i t e f l n ( ) ;// Not ye t implementedextern (C++) makeCoffee ( ) ;
C and D are supported
C++ is in progress
Pascal should be supported on Windows
The D2azel Team The D Programming Language 66 / 113
![Page 94: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/94.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Type alias
Type alias
Declaration
a l i a s u int s c o r e ;s c o r e myScore = 42 ;u int u i n t S c o r e = myScore ;
a l i a s s t d . c . s t r i n g c s t r ;a l i a s myVar . myFie ld [ myIndex ] myAl ias ;
Compatible with the original type
Work also for variables, modules or any symbol
The D2azel Team The D Programming Language 67 / 113
![Page 95: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/95.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Type de�nition
Type de�nition
Declaration
typedef u int s c o r e = 42 ;i n t t oU in t ( s c o r e s ){
return cast ( u int ) s ;}
Strong type identity
Custom initializer
The D2azel Team The D Programming Language 68 / 113
![Page 96: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/96.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Enumerations
Enumerations
Declaration
enum MyEnum : MyType{
MY_FIRST_VALUE,MY_SECOND_VALUE = myValue , // ' , ' i s a l l owed
} // ' ; ' i s f o r b i d d e n
Default type is int
Default initializer is the �rst value
The D2azel Team The D Programming Language 69 / 113
![Page 97: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/97.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Unions
Unions
Declaration
union MyUnion{
myType1 myFie ld1 ;myType2 myFie ld2 ; // ' ; ' i s a l l owed
} // ' ; ' i s f o r b i d d e n
Value type
P.O.D. (No identity)
No inheritance
The D2azel Team The D Programming Language 70 / 113
![Page 98: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/98.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Unions
Unions
Usage
MyUnion myVar ={
myFie ld = myValue} ;
The D2azel Team The D Programming Language 70 / 113
![Page 99: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/99.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Structs
Structs
Declaration
s t ruc t MyStruct{
myType1 myFie ld1 = myValue ;myType2 myFie ld2 ;
} // ' ; ' i s f o r b i d d e n
Value type
P.O.D. (No identity)
No inheritance
The D2azel Team The D Programming Language 71 / 113
![Page 100: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/100.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Structs
Structs
Usage
MyStruct myVar ={
myValue1 ,myValue2
} ;
Struct literal
myFunction ( MyStruct (myValue1 , myValue2 ) ) ;
The D2azel Team The D Programming Language 71 / 113
![Page 101: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/101.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Structs
Structs
Explicit �elds initialization
MyStruct myVar ={
myFie ld2 : myValue1 ,myFie ld1 : myValue2
} ;
The D2azel Team The D Programming Language 71 / 113
![Page 102: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/102.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Structs
Structs
Struct initializer
s t ruc t MyStruct{
MyType myFie ld ;s t a t i c MyStruct opCa l l (MyType myValue ){
MyStruct myVar ;myVar . myFie ld = myValue ;return myVar ;
}}
The D2azel Team The D Programming Language 71 / 113
![Page 103: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/103.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Structs
Structs
Fields alignment
s t ruc t MyStruct{
a l i gn (32) MyType myFie ld1 ;a l i gn (32) MyType myFie ld1 ;
}
The D2azel Team The D Programming Language 71 / 113
![Page 104: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/104.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Interfaces
Interfaces
Declaration
i n t e r f a ce MyIn t e r f a c e{
MyType1 myMethod1 (MyType2 myArg1 ) ;MyType3 myMethod2 (MyType4 myArg2 ) ;
} // ' ; ' i s f o r b i d d e n
Reference type
Only methods
No implementation
Inheritance
The D2azel Team The D Programming Language 72 / 113
![Page 105: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/105.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Classes
Classes
Declaration
c l a s s MyClass : MyParentClass My In t e r f a c e{
MyType myMethod (MyType myArg ){}MyType myMember1 = myValue ;MyType myMember2 ;
} // ' ; ' i s f o r b i d d e n
Reference type
Object identity
Inheritance
Interface implementation
The D2azel Team The D Programming Language 73 / 113
![Page 106: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/106.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Classes
Classes
Usage
MyClass myVar ;MyClass . myStat icMethod ( ) ;
The D2azel Team The D Programming Language 73 / 113
![Page 107: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/107.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Classes
Classes
Protection attributes
private
package
protected
public
export
The D2azel Team The D Programming Language 73 / 113
![Page 108: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/108.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Classes
Classes
Constructors
c l a s s MyClass{
t h i s ( ){}t h i s (MyType myArg ){}
} // ' ; ' i s f o r b i d d e n
The D2azel Team The D Programming Language 73 / 113
![Page 109: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/109.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Classes
Classes
Destructor
c l a s s MyClass{
~ t h i s ( ){}
} // ' ; ' i s f o r b i d d e n
Always virtual
Called on delete or by the garbage collector
The D2azel Team The D Programming Language 73 / 113
![Page 110: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/110.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Classes
Classes
Allocators
c l a s s MyClass{
new( u int s i z e , MyType myArg ){}
} // ' ; ' i s f o r b i d d e nnew( myValue ) MyClass ( ) ;
Always virtual
Called on deletion or by the garbage collector
The D2azel Team The D Programming Language 73 / 113
![Page 111: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/111.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Classes
Classes
Access to parent class in C++
MyBaseClass ( ) ;MyBaseClass : : myMethod ( ) ;
Access to parent class in C#
base ( ) ;base . myMethod ( ) ;
Access to parent class in Java or D
super ( ) ;super . myMethod ( ) ;
The D2azel Team The D Programming Language 73 / 113
![Page 112: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/112.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Classes
Classes
Sealed class in C#
sea led c l a s s MyClass{}
Final class in D
f i n a l c l a s s MyClass{}
The D2azel Team The D Programming Language 73 / 113
![Page 113: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/113.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Classes
Classes
Method overriding
c l a s s MyClass : MyBaseClass{
over r ide MyType myOverr idenMethod ( ){}
} // ' ; ' i s f o r b i d d e n
More explicit
Allow easier error detection
The D2azel Team The D Programming Language 73 / 113
![Page 114: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/114.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Classes
Classes
Block overriding
c l a s s MyClass : MyBaseClass{
over r ide
{MyType myOverr idenMethod ( ){}
}} // ' ; ' i s f o r b i d d e n
Allow multiple overriding
The D2azel Team The D Programming Language 73 / 113
![Page 115: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/115.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Classes
Classes
Covariant method return type
c l a s s MyClass : MyBaseClass{
over r ide typeof ( t h i s ) myOverr idenMethod ( ){}
} // ' ; ' i s f o r b i d d e n
Also possible in C++
Not possible in C#
The D2azel Team The D Programming Language 73 / 113
![Page 116: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/116.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Classes
Classes
Abstract classes
abstract c l a s s MyClass{
MyType myMethod (MyType myArg ){}MyType myMember = myValue ;
}
Cannot be instanciated
Provide base functionalities
The D2azel Team The D Programming Language 73 / 113
![Page 117: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/117.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Classes
Classes
Abstract methods
c l a s s MyClass{
abstract MyType myMethod (MyType myArg ){}MyType myMember = myValue ;
}
Make the enclosing class abstract
Provide base functionalities
The D2azel Team The D Programming Language 73 / 113
![Page 118: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/118.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Classes
Classes
Multiple astract methods
c l a s s MyClass{
abstract
{MyType myMethod (MyType myArg ){}
}}
Make the enclosing class abstract
Provide base functionalities
The D2azel Team The D Programming Language 73 / 113
![Page 119: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/119.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Classes
Classes
Nested classes
c l a s s MyClass1{
MyType myVar ;c l a s s MyClass2{}
}
Access to outer classes members
The D2azel Team The D Programming Language 73 / 113
![Page 120: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/120.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Classes
Classes
Functions classes
MyType myFunction{
MyType myVar ;c l a s s MyClass{}
}
Also possible in C++
Not possible in C#
The D2azel Team The D Programming Language 73 / 113
![Page 121: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/121.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Classes
Classes
Access to outer classes
doSomethingWith ( t h i s . o u t e r ) ;
The D2azel Team The D Programming Language 73 / 113
![Page 122: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/122.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Classes
Classes
Anonymous classes
auto MyVar = new c l a s s MyParentClass My In t e r f a c e{
// C l a s s con t en t} ;
The D2azel Team The D Programming Language 73 / 113
![Page 123: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/123.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Classes
Classes
Properties (setter)
c l a s s MyClass{
pub l i c :MyType myProperty (MyType va l u e ){
return _myAttr ibute = va l u e ;}
pr i va te :MyType _myAttr ibute ;
}
Transparent for the user
The D2azel Team The D Programming Language 73 / 113
![Page 124: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/124.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Classes
Classes
Properties (getter)
c l a s s MyClass{
pub l i c :MyType myProperty ( ){
return _myAttr ibute ;}
pr i va te :MyType _myAttr ibute ;
}
Transparent for the user
The D2azel Team The D Programming Language 73 / 113
![Page 125: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/125.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Classes
Classes
Properties usage
MyClass myVar ;myVar . myProperty = myValue ;doSomethingWith (myVar . myProperty ) ;// And soon . . .myVar . myProperty += myValue ;
Will be lvalue in next version
The D2azel Team The D Programming Language 73 / 113
![Page 126: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/126.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Types modi�ers
Types modi�ers
Invariants
i n va r i an t i n t my Inva r i a n t = 42 ;
Value never changes
Can be stored in ROM
Cannot be referenced
The D2azel Team The D Programming Language 74 / 113
![Page 127: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/127.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Types modi�ers
Types modi�ers
Constants
i n t myVar = 42 ;const ( i n t ∗) myConstPtr ;myConstPtr = &myVar ;
Value cannot change through const variables
Value can change elsewhere in the program
Cannot be stored in ROM
May be "const" referenced
The D2azel Team The D Programming Language 74 / 113
![Page 128: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/128.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Types modi�ers
Types modi�ers
Finals
f i n a l i n t myFina l ;myFina l = 42 ;
Value cannot be changed after the �rst assignment
The D2azel Team The D Programming Language 74 / 113
![Page 129: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/129.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Types modi�ers
Types modi�ers
Multiple modi�er in C++
const i n t ∗ const∗ myVar ;i n t const∗ const∗ myVar ;
Value cannot be changed after the �rst assignment
Multiple modi�er in D
const ( i n t ∗)∗ myVar ;
Value cannot be changed after the �rst assignment
The D2azel Team The D Programming Language 74 / 113
![Page 130: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/130.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Types modi�ers
Types modi�ers
Invariant methods
c l a s s MyClass : MyParentClass My In t e r f a c e{
i n va r i an t MyType myMethod (MyType myArg ){}
}
Ensure that nothing referenced bt this can change
The D2azel Team The D Programming Language 74 / 113
![Page 131: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/131.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Simple template declaration
Simple template declaration
In C++
template<typename T>T myFunction (T myArg ) ;
In D
T myFunction (T) (T myArg ){}
The D2azel Team The D Programming Language 75 / 113
![Page 132: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/132.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Simple template declaration
Simple template declaration
Caracteristics
Non ambiguous
Not limited to integral values and types
Flexible (see further)
Need to be correct, even if not used
Importable
The D2azel Team The D Programming Language 75 / 113
![Page 133: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/133.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Simple template declaration
Simple template declaration
Class or struct template
c l a s s MyClass (T){}s t ruc t MyStruct (T){}
The D2azel Team The D Programming Language 75 / 113
![Page 134: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/134.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Simple template usage
Simple template usage
In C++
myFunction<MyType>(myArg ) ;
In D
myFunction ! (MyType ) (myArg ) ;
The D2azel Team The D Programming Language 76 / 113
![Page 135: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/135.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Simple template usage
Simple template usage
... Or even simpler, in C++
myFunction (myArg ) ;
... Or in D
myFunction (myArg ) ;
The D2azel Team The D Programming Language 76 / 113
![Page 136: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/136.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Multiple templates
Multiple templates
In C++
template<typename T> T myFunction (T myArg ) ;template<typename T> T myVar ;
template MyTemplate (T){
T myFunction (T myArg ){}T myVar ;
}
The D2azel Team The D Programming Language 77 / 113
![Page 137: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/137.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Multiple templates
Multiple templates
Usage
MyTemplate ! (MyType ) . myFunction (myArg ) ;MyTemplate ! (MyType ) . myVar ;
The D2azel Team The D Programming Language 77 / 113
![Page 138: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/138.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Complex template declaration
Complex template declaration
template MyTemplate (T: T∗){}template MyTemplate (T: T[U] , U){}
The D2azel Team The D Programming Language 78 / 113
![Page 139: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/139.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Complex template declaration
Complex template declaration
Caracteristics
Allow complex template patterns
Compatible with inheritance
The D2azel Team The D Programming Language 78 / 113
![Page 140: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/140.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Complex template declaration
Complex template declaration
Default parameters
template MyTemplate (T: T[U] , U = i n t ){}template MyTemplate (T, U = T∗){}
The D2azel Team The D Programming Language 78 / 113
![Page 141: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/141.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Flexible templates
Flexible templates
template MyTemplate ( a l i a s T){}
Allows complex template patterns
Compatible with inheritance
The D2azel Team The D Programming Language 79 / 113
![Page 142: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/142.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Tuple parametrized templates
Tuple parametrized templates
template myTemplate (T . . . ){
void myFunction (T myTuple ){}
}
Allow complex template patterns
Allow factorization of tuple functions
The D2azel Team The D Programming Language 80 / 113
![Page 143: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/143.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Using templates and delegates for curry�cation
Using templates and delegates for curry�cation
See http://www.digitalmars.com/d/template.html
Allow partial application of functions
The D2azel Team The D Programming Language 81 / 113
![Page 144: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/144.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Metaprogrammation
Metaprogrammation
u int f a c t ( i n t n ){
i f ( n == 1)return 1 ;
e l s e
return n ∗ f a c t ( n − 1 ) ;}
No need to use templates in D
Also no need to use inline functions
The D2azel Team The D Programming Language 82 / 113
![Page 145: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/145.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Exception creation
Exception creation
Usage
throw new Excep t i on ;
Throw an exception
The D2azel Team The D Programming Language 83 / 113
![Page 146: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/146.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Exception handling
Exception handling
Usage
t ry
{}catch ( MyExceptionType myExcept ion ){}
Catch an exception
The D2azel Team The D Programming Language 84 / 113
![Page 147: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/147.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Finally clause
Finally clause
Usage
t ry
{}f i n a l l y
{}
Executed wherever the �ow is directed to
The D2azel Team The D Programming Language 85 / 113
![Page 148: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/148.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
With
With
Usage
with ( myObject ){
f i e l d 1 = va l u e1 ;f i e l d 2 = va l u e2 ;
}
The D2azel Team The D Programming Language 86 / 113
![Page 149: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/149.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Deprecated
Deprecated
Deprecated code
deprecated
{void dep r e c a t edFunc t i on ( ){}
}
Generates warnings
May generate errors
The D2azel Team The D Programming Language 87 / 113
![Page 150: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/150.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Volatile
Volatile
Volatile statement
v o l a t i l e
{a = ∗ sharedMemory ;
}
Safe variables access
Concurrent threads
The D2azel Team The D Programming Language 88 / 113
![Page 151: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/151.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Synchronized
Synchronized
Synchronized statement
synchronized
{i f ( a c t i o n = Act ion .ADD)
c r e d i t += va l u e ;e l s e
c r e d i t −= va l u e ;}
One execution at a time
Concurrent threads
The D2azel Team The D Programming Language 89 / 113
![Page 152: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/152.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Scope
Scope
In scope variable
whi le ( c o n d i t i o n ){
scope MyType myVar ;// Something u s e f u l
} // myVar i s d e s t r o y ed he r e
Control over garbage collection
The variable in destroyed out of scope
The D2azel Team The D Programming Language 90 / 113
![Page 153: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/153.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Special scopes
Special scopes
Success scope
doSomething ( ){
scope ( s u c c e s s ){}
}
Run at successful exit
Called before the destructor
The D2azel Team The D Programming Language 91 / 113
![Page 154: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/154.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Special scopes
Special scopes
Failure scope
doSomething ( ){
scope ( f a i l u r e ){}
}
Run at forced exit
Called before the destructor
The D2azel Team The D Programming Language 91 / 113
![Page 155: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/155.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Special scopes
Special scopes
Exit scope
doSomething ( ){
scope ( e x i t ){}
}
Run after any exit
Called after the destructor
The D2azel Team The D Programming Language 91 / 113
![Page 156: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/156.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
ASM scopes
ASM scopes
Usage
i n t myAdd( i n t x ){
asm
{mov EAX, x [EBP ] ;
}}
Full control over the machine
Fully integrated in D language
The D2azel Team The D Programming Language 92 / 113
![Page 157: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/157.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Assert
Assert
Usage
as se r t ( p r e d i c a t e ) ;
Throw an exception
The D2azel Team The D Programming Language 93 / 113
![Page 158: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/158.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Input contracts
Input contracts
Usage
MyType myFunction (MyType myArg )i n
{}body
{}
Throw an exception
Not in release version
Evaluated before the function is called
Not inherited
The D2azel Team The D Programming Language 94 / 113
![Page 159: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/159.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Output contracts
Output contracts
Usage
MyType myFunction (MyType myArg )out ( r e s u l t ){}body
{}
Throw an exception
Not in release version
Evaluated after the function has returned
Inherited
The D2azel Team The D Programming Language 95 / 113
![Page 160: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/160.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Class invariants
Class invariants
Usage
c l a s s MyClass{
MyType myAt t r i bu te ;i n va r i an t ( ){
as se r t ( somePred i ca te ) ;}
}
Predicates than never change
The D2azel Team The D Programming Language 96 / 113
![Page 161: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/161.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Unit tests
Unit tests
Usage
c l a s s MyClass{
MyType myAt t r i bu te ;un i t t e s t
{as se r t ( somePred i ca te ) ;
}}
Executed when compiling with -unittest switch
The D2azel Team The D Programming Language 97 / 113
![Page 162: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/162.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Static if
Static if
Usage
c l a s s MyClass (T){
s t a t i c i f ( i s (T [ ] ) )MyType myMethod ( ){}
}
The D2azel Team The D Programming Language 98 / 113
![Page 163: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/163.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Static assert
Static assert
Usage
s t a t i c_ a s s e r t ( myPred icate ) ;
The D2azel Team The D Programming Language 99 / 113
![Page 164: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/164.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Version
Version
Usage
vers ion (Win64 ){}vers ion (X86_64){}
The D2azel Team The D Programming Language 100 / 113
![Page 165: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/165.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Debug
Debug
Usage
debug ( debugLeve l ){}debug ( debugId ){}
The D2azel Team The D Programming Language 101 / 113
![Page 166: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/166.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Pragma
Pragma
Usage
pragma ( ExtensionName ){}
Add features to the compiler
Proprietary extensions
Example
pragma (msg , " He l l o wor ld ! " ) ;
The D2azel Team The D Programming Language 102 / 113
![Page 167: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/167.jpg)
Code organisation Base types Operators Flow control Functions Custom types Templates Exceptions Scopes Contracts Compilation inline ASM
Fully functional inline asm
Fully functional inline asm
Labelized asm
Easy acces to member of aggregate
Easy acces to stack variables (cdecl convetion)
The D2azel Team The D Programming Language 103 / 113
![Page 168: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/168.jpg)
Phobos Tango Arclib dSource.org
Part III
Libraries
The D2azel Team The D Programming Language 104 / 113
![Page 169: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/169.jpg)
Phobos Tango Arclib dSource.org
Phobos - Aim
Phobos - Aim
Provide a standard library to handle common task.
std.conv : equivalent for atoi(), atol(). . . with error handling(over�ow, whitespaces...)
std.ctype : ASCII character classi�cation functions such asislower(dchar c), isspace(dchar c). . .
std.�le : File handling. Common functions like read(constchar[] name) and other features such as listdir(<...>),copy(<...>). . .
std.stdio : Common function such as writef(...),readln(_iobuf* fp = stdin)
std.stream : Stream handling, with read(out byte x),readLine(), writeLine(const(char)[] s). . .
std.c.* : libc
The D2azel Team The D Programming Language 105 / 113
![Page 170: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/170.jpg)
Phobos Tango Arclib dSource.org
Extra Features of Phobos
Extra Features of Phobos
Some features that can help to make co�e.
std.boxer : Put heap and value type in box type. (allow to putdi�erent objects in the same list of box)
std.cpuid : Give information such as vendor, if mmx ispresent. . . on CPU at runtime (only for x86)
std.uni : Like std.ctype but for Unicode character
std.gc : Advanced garbage collector operation. Allow to runfull collection, enable or disable GC, and a lot more.
std.traits : Template to got information on type during compiltime
std.zip / std.zlib : Compression handling
http://digitalmars.com/d/phobos/phobos.html
The D2azel Team The D Programming Language 106 / 113
![Page 171: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/171.jpg)
Phobos Tango Arclib dSource.org
Extra Features of Phobos
Extra Features of Phobos
Some features that can help to make co�e.
std.boxer : Put heap and value type in box type. (allow to putdi�erent objects in the same list of box)
std.cpuid : Give information such as vendor, if mmx ispresent. . . on CPU at runtime (only for x86)
std.uni : Like std.ctype but for Unicode character
std.gc : Advanced garbage collector operation. Allow to runfull collection, enable or disable GC, and a lot more.
std.traits : Template to got information on type during compiltime
std.zip / std.zlib : Compression handling
http://digitalmars.com/d/phobos/phobos.html
The D2azel Team The D Programming Language 106 / 113
![Page 172: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/172.jpg)
Phobos Tango Arclib dSource.org
Tango - Features
Tango - Features
Provide another standard library with new functionalities.
Like in Phobos
tango.core.Memory : Garbage collector operation
tango.core.Traits : Type information during compil time
tango.stdc.* : libc
Not in Phobos
tango.core.Variant : Variant like in Boost (union with dynamictype checking)
tango.net.* : Class handling a lot of protocol such as ftp withtango.net.ftp.FtpClient, http with tango.net.http.HttpClient. . .
tango.io.digest.* : Digest algorithm like md5, sha1, crc32. . .
http://dsource.org/projects/tango/docs/current/The D2azel Team The D Programming Language 107 / 113
![Page 173: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/173.jpg)
Phobos Tango Arclib dSource.org
Tango - Features
Tango - Features
Provide another standard library with new functionalities.
Like in Phobos
tango.core.Memory : Garbage collector operation
tango.core.Traits : Type information during compil time
tango.stdc.* : libc
Not in Phobos
tango.core.Variant : Variant like in Boost (union with dynamictype checking)
tango.net.* : Class handling a lot of protocol such as ftp withtango.net.ftp.FtpClient, http with tango.net.http.HttpClient. . .
tango.io.digest.* : Digest algorithm like md5, sha1, crc32. . .
http://dsource.org/projects/tango/docs/current/The D2azel Team The D Programming Language 107 / 113
![Page 174: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/174.jpg)
Phobos Tango Arclib dSource.org
Arclib is Based on
Arclib is Based on
Based on
OpenGL
OpenAL
SDL
SDL_image
FreeType
The D2azel Team The D Programming Language 108 / 113
![Page 175: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/175.jpg)
Phobos Tango Arclib dSource.org
Arclib Features
Arclib Features
Features
Font Rendering
2D Physics Engine
Easy access to input
Easy GUI system
DOM XML parser
Loading png/jpg/tga/bmp/gif/pcx/lbm/xpm/pnm graphics�les
Font Rendering
http://dsource.org/projects/arclib#[email protected]
The D2azel Team The D Programming Language 109 / 113
![Page 176: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/176.jpg)
Phobos Tango Arclib dSource.org
Arclib Features
Arclib Features
Features
Font Rendering
2D Physics Engine
Easy access to input
Easy GUI system
DOM XML parser
Loading png/jpg/tga/bmp/gif/pcx/lbm/xpm/pnm graphics�les
Font Rendering
http://dsource.org/projects/arclib#[email protected]
The D2azel Team The D Programming Language 109 / 113
![Page 177: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/177.jpg)
Phobos Tango Arclib dSource.org
Must See
Must See
See : http://dsource.org/projects/
The D2azel Team The D Programming Language 110 / 113
![Page 178: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/178.jpg)
Phobos Tango Arclib dSource.org
Must See
Conclusion
To remember
A cool language with advanced features
A cool community
A cool presentation
To go further
Ask us
Read the language reference
Join the forums
Try it by yourself
The D2azel Team The D Programming Language 111 / 113
![Page 179: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/179.jpg)
Phobos Tango Arclib dSource.org
Must See
Questions
Any question ?
The D2azel Team The D Programming Language 112 / 113
![Page 180: The D Programming Language - Jérémie Roquet · The D programming language The tools The libraries Presentation A short introduction to basic concepts oT make you discover a cool](https://reader033.vdocument.in/reader033/viewer/2022051511/601ae4f410a0612fc167b87f/html5/thumbnails/180.jpg)
Phobos Tango Arclib dSource.org
Must See
Bibliography
Useful links
http://www.digitalmars.com/d/ � The o�cial D reference
The D2azel Team The D Programming Language 113 / 113