Recherche…


Syntaxe

  • <type> [] <nom>;

Remarques

Les tranches génèrent une nouvelle vue sur la mémoire existante. Ils ne créent pas de nouvelle copie. Si aucune tranche ne contient de référence à cette mémoire - ou à une partie coupée de celle-ci - elle sera libérée par le ramasse-miettes.

En utilisant des tranches, il est possible d’écrire du code très efficace pour, par exemple, des analyseurs qui opèrent sur un seul bloc de mémoire et divisent simplement les parties sur lesquelles ils doivent travailler, sans besoin d’allouer de nouveaux blocs de mémoire.

Déclaration et initialisation

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

Opérations de tableau

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

Tranches

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow