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