Scala Streams

Scala Streams
Scala est pour faciliter les opérations paresseuses. Étant donné que tous les calculs sur ces collections sont différés, ils ne sont pas strictement définis. Nous explorerons les flux Scala qui sont les types uniques de listes dans cet article sur les flux à Scala. La collection Scala qui stocke les données comprend également le flux Scala. La seule différence qui sépare cela d'une liste dans Scala est quand elle est nécessaire pour la scala lorsque les valeurs du flux sont calculées. Parce qu'ils ne chargent pas les données d'un coup, les flux Scala sont des listes paresseuses qui n'évaluent que les valeurs au besoin. Cela améliore les performances du programme.

Syntaxe du flux à Scala dans Ubuntu 20.04

La principale différence entre un flux Scala et une liste est que les éléments d'un flux sont calculés lentement plutôt que tout en une fois. Notre application s'exécute plus rapidement car seuls les éléments que nous demandons sont calculés. Le flux de Scala, cependant, est rapide.

Val Stream = 1 # :: 2 # :: 3 # :: Stream.vide

Un flux peut être créé à l'aide de l'approche et du flux de l'opérateur # ::.vide à la fin de l'expression par opposition à une liste de Scala qui peut être créée avec l'opérateur ::.vide. Un flux de nombres est donné comme la spécification du flux. Dans ce cas, 1 représente la tête du ruisseau. Tandis que 2 et 3 représentent la queue du ruisseau. Les commandes de prise telles que celles suivantes peuvent être utilisées pour récupérer les valeurs:

flux.prendre (valeur)

Exemple 1: Création d'un flux à Scala

Les exemples de création d'un flux à Scala sont donnés dans les illustrations suivantes. Les éléments d'un flux sont conservés après avoir été évalué.

Nous avons construit l'objet comme «Stream1». Il contient la définition de la méthode principale à l'intérieur du bloc de la méthode principale. Nous avons fait le code Scala Stream. Pour cela, nous avons d'abord déclaré la variable de mot-clé «Val» comme «mystream». La variable «mystream» est définie avec un flux de trois nombres. Nous avons utilisé 2, 4 et 10 comme entiers pour le flux. Ici, 2 est appelé la tête et les deux entiers suivants, 4 et 10, sont appelés la queue du ruisseau. Nous avons utilisé le hashtag «#» et l'opérateur de résolution de portée «::» entre les entiers. Le flux.vide est employé à la fin du ruisseau. Ensuite, nous avons appelé la variable «mystream» à l'intérieur de la fonction println pour imprimer le flux spécifié.

Les résultats montrent que la deuxième partie n'a pas été évaluée. Dans ce cas, l'élément est remplacé par un point d'interrogation. Les listes ne sont pas évaluées par Scala tant qu'elles ne sont pas nécessaires. La queue n'est pas imprimée car elle n'a pas encore été calculée. Les flux sont désignés pour un calcul paresseux.

Exemple 2: Création d'un flux avec le flux.Package contre Scala

Flux.les inconvénients peuvent également être utilisés pour construire un flux. Pour générer des flux, utilisez l'importation du package «Scala.collection.immuable.Flux.les inconvénients".

Nous avons mentionné le package Scala «Scala.collection.immuable.Ruisseaux.Inconvénients »dans notre section d'en-tête. Après cela, nous avons fait un objet comme «Stream2». La définition de la méthode principale est fournie pour cet objet. Nous avons créé la variable «S» à l'aide du mot clé «Val». Nous avons attribué le flux [int] à la variable «S». Ensuite, nous avons appelé les inconvénients du ruisseau. Chaque inconvénient du ruisseau est enfermé à l'intérieur de l'autre. En fin de compte, nous avons utilisé le flux.vide dans le dernier contre. Ensuite, nous avons la méthode println pour imprimer le flux.Consients Éléments. Nous avons utilisé l'interpolation de la chaîne «$ s» pour imprimer les éléments du flux.

Le flux immuable est généré dans l'écran de sortie suivant. Seuls les éléments de tête du ruisseau sont obtenus et la queue n'est pas évaluée:

Exemple 3: Utilisation de la fonction de prise sur le flux à Scala

Pour extraire les éléments d'un flux, utilisez la fonction de prise.

Nous avons établi l'objet «Stream3» et désigné la méthode principale pour cela. La méthode principale contient la déclaration variable et l'instruction d'impression à afficher. La variable est déclarée ici comme «ST» et initialisée avec le flux de trois nombres impairs. Le flux est créé avec l'opérateur «# ::» et le flux.vide à la fin du ruisseau.

Après la création du flux, nous l'avons affiché avec la fonction d'impression. Ensuite, nous avons pris les deux premiers éléments du flux donné en passant la valeur «2» dans le ST.Méthode Take (). Ensuite, nous avons obtenu les cinq premiers éléments du flux en passant le «5» dans la méthode Stream Take ().

Lors de la première évaluation du flux, un seul élément est obtenu. Après avoir utilisé la commande Stream Take, nous avons récupéré les deux premiers éléments du flux. De plus, nous avons récupéré les cinq premiers éléments du flux. Comme seuls trois éléments sont fournis au flux, donc seuls trois sont accessibles dans la dernière sortie. Notez qu'aucune erreur n'est lancée.

Exemple 4: Utilisation de la carte sur le flux à Scala

Nous utilisons la fonction de carte sur un flux dans un programme Scala. Les opérations de flux sont effectuées à l'aide de la fonction de carte.

Nous avons un objet «Stream4» où la définition principale du programme est appelée. Dans la fonction principale de l'objet «Stream4», nous avons défini une variable «Stream». Ici, nous avons créé le flux avec l'opérateur «# ::». Le flux.Le vide est utilisé à la fin de l'expression du flux. Le flux créé est imprimé en passant la variable «Stream» à la fonction println. Ensuite, nous avons appelé la fonction de carte dans une autre fonction println. Nous avons transformé le flux d'entrée avec le nouveau flux à l'aide de la fonction MAP.

La première sortie obtenue est la vapeur et la suivante est le nouveau flux de carte du flux précédent.

Exemple 5: Initialisation d'un flux vide à Scala

Un flux vide peut être initialisé à l'aide du code suivant:

Dans l'objet «Stream5», nous avons classé la méthode principale. Dans la méthode principale, nous avons créé la variable «S_EMPTY» et réglé le flux vide. Ensuite, nous avons affiché le flux vide en utilisant la méthode println et avons passé la variable «S_Empty».

La sortie montre que le flux est vide. De plus, il affiche le flux vide mais ne lance aucune exception.

Conclusion

Ceci est un manuel de référence Scala Stream. Ici, nous avons parcouru comment créer la fonction Streams dans Scala en utilisant les exemples de programmation appropriés. Nous n'avons pas calculé la valeur d'un élément en une seule fois dans Scala Stream mais plutôt un à la fois. Lorsque les performances sont un problème, utilisez-le. Lorsqu'il s'agit d'acquérir un élément de flux, il utilise la méthode la plus récente. Étant donné qu'une seule entrée est calculée à la fois, Stream utilise moins de mémoire que la liste.