Sök…


Syntax

  • <typ> [] <namn>;

Anmärkningar

Skivor genererar en ny vy på befintligt minne. De skapar inte en ny kopia. Om ingen skiva har en referens till det minnet längre - eller en skivad del av det - kommer det att frigöras av avfallssamlaren.

Med hjälp av skivor är det möjligt att skriva mycket effektiv kod för t.ex. parsers som bara fungerar på ett minnesblock och bara skär de delar de verkligen behöver för att arbeta med - inget behov av att tilldela nya minnesblock.

Förklaring och initialisering

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-operationer

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]
}

skivor

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow