D Language
Dynamische Arrays & Slices
Suche…
Syntax
- <Typ> [] <Name>;
Bemerkungen
Slices erzeugen eine neue Ansicht des vorhandenen Speichers. Sie erstellen keine neue Kopie. Wenn kein Slice mehr einen Verweis auf diesen Speicher enthält - oder einen Teil davon - wird es vom Garbage Collector freigegeben.
Mit Slices ist es möglich, sehr effizienten Code für z. B. Parser zu schreiben, die nur einen Speicherblock bearbeiten und nur die Teile schneiden, an denen sie wirklich arbeiten müssen.
Deklaration und Initialisierung
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-Operationen
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]
}
Scheiben
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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow