D Language
Tableaux et tranches dynamiques
Recherche…
Syntaxe
- <type> [] <nom>;
Remarques
Les tranches génèrent une nouvelle vue sur la mémoire existante. Ils ne créent pas de nouvelle copie. Si aucune tranche ne contient de référence à cette mémoire - ou à une partie coupée de celle-ci - elle sera libérée par le ramasse-miettes.
En utilisant des tranches, il est possible d’écrire du code très efficace pour, par exemple, des analyseurs qui opèrent sur un seul bloc de mémoire et divisent simplement les parties sur lesquelles ils doivent travailler, sans besoin d’allouer de nouveaux blocs de mémoire.
Déclaration et initialisation
import std.stdio;
void main() {
int[] arr = [1, 2, 3, 4];
writeln(arr.length); // 4
writeln(arr[2]); // 3
// type inference still works
auto arr2 = [1, 2, 3, 4];
writeln(typeof(arr2).stringof); // int[]
}
Opérations de tableau
import std.stdio;
void main() {
int[] arr = [1, 2, 3];
// concatenate
arr ~= 4;
writeln(arr); // [1, 2, 3, 4]
// per element operations
arr[] += 10
writeln(arr); // [11, 12, 13, 14]
}
Tranches
import std.stdio;
void main() {
int[] arr = [1, 2, 3, 4, 5];
auto arr2 = arr[1..$ - 1]; // .. is the slice syntax, $ represents the length of the array
writeln(arr2); // [2, 3, 4]
arr2[0] = 42;
writeln(arr[1]); // 42
}
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow