53 votes

Que sont les vues pour les collections et quand voudriez-vous les utiliser?

Dans Scala, vous pouvez créer des vues pour de nombreux types (tous?) De collections.

Qu'est-ce qu'une vue et à quelles fins les vues sont-elles utiles?

47voto

Moritz Points 9149

Les vues sont des versions non strictes de collections. Cela signifie que les éléments sont calculés à l'accès et à ne pas ardemment que dans les collections.

Comme un exemple, le code suivant:

val xs = List.tabulate(5)(_ + 1)
val ys = xs.view map { x => println(x); x * x }

Seulement ce ne sera pas imprimer quoi que ce soit mais à chaque accès à la liste va effectuer le calcul et l'impression de la valeur, c'est à dire de chaque appel d' ys.head entraînera 1 en cours d'impression. Si vous souhaitez obtenir une version stricte de la collection de nouveau, vous pouvez appeler force sur il. Dans ce cas, vous verrez que tous les numéros imprimés.

Une utilisation pour les vues, c'est quand vous avez besoin de parcourir une collection de valeurs qui sont coûteux à calculer et vous avez seulement besoin d'une valeur à la fois. Aussi des vues vous permettent de construire des paresseux séquences en appelant toStream , qui permettra également de mettre en cache les éléments évalués.

9voto

Eugene Yokota Points 43213

Voir les points de Vue de la Scala 2.8 Collections de l'API.

Scala collections sont par défaut stricte dans tous leurs transformateurs, sauf pour Stream, qui met en œuvre tout son transformateur méthodes paresseusement. Cependant, il est un moyen systématique de transformer chaque collection dans un paresseux et vice versa, qui est basé sur les vues de la collection. Une vue est un type spécial de collection qui représente une collection de base, mais met en œuvre tous les transformateurs paresseusement.

...

Il y a deux raisons pour lesquelles vous pourriez envisager d'utiliser des points de vue. Le premier est la performance. Vous avez vu que, par la commutation d'une collection d'un point de vue de la construction de résultats intermédiaires peuvent être évités. Ces économies peuvent être assez importants.

...

Le deuxième cas d'utilisation s'applique à des vues sur mutable séquences. De nombreux transformateur de fonctions sur de tels points de vue de fournir une fenêtre dans la séquence d'origine, qui peut ensuite être utilisé pour mettre à jour de manière sélective certains éléments de cette séquence.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X