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