Silex v0.47.1 / Docs Source canonique ↗

Emprunter une vue de collection

Une vue partage une tranche de stockage sans posséder ses éléments. @ crée une vue en lecture et & une vue modifiable.

func main() {
    var values = [10, 20, 30, 40, 50]
    {
        let middle = @values[1:4]
        print(middle[0])
    }

    {
        var editable = &values[1:4]
        editable[0] = 42
    }
    print(values[1])
}

Les deux bornes sont obligatoires. Le début est inclus, la fin exclue. Les bornes négatives sont rendues relatives à count(), puis les deux bornes sont limitées aux limites de la collection.

Accepter une vue

func sum(values:@int[..]) int {
    var total = 0
    for value in values {
        total += value
    }
    return total
}

Retourner une vue

func identity(values:@int[..]) @values:int[..] {
    return values
}

Une vue peut vivre dans une liaison lexicale ou traverser un paramètre et un retour empruntés dont la provenance est déclarée. Elle ne possède ni stockage ni éléments.

Les vues partagées et modifiables acceptent count, is_empty, l'indexation, les sous-vues et l'itération. Une vue modifiable accepte aussi les écritures indexées, for var et swap. Aucune vue ne peut redimensionner, réordonner globalement, retirer ou transférer des éléments.

Une vue ne peut pas être stockée dans un optionnel, une structure, un enum, une collection, un champ statique ou une capture. Une tranche sans @ ni & reste une liste copiée et indépendante.

Revenir aux collections · Comprendre les références