D Language
Dynamische arrays en segmenten
Zoeken…
Syntaxis
- <type> [] <naam>;
Opmerkingen
Segmenten genereren een nieuwe kijk op bestaand geheugen. Ze maken geen nieuwe kopie. Als geen enkele plak meer naar die herinnering verwijst - of een gesneden deel ervan - zal het worden vrijgegeven door de vuilnisman.
Met plakjes is het mogelijk om zeer efficiënte code te schrijven voor bijv. Parsers die slechts op één geheugenblok werken en gewoon de delen snijden waaraan ze echt moeten werken - het is niet nodig om nieuwe geheugenblokken toe te wijzen.
Verklaring en initialisatie
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[]
}
Array-bewerkingen
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]
}
Slices
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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow