Stream es una lista perezosa donde los elementos se evalúan solo cuando son necesarios. Esta es una característica de Scala. Scala admite el cálculo perezoso. Aumenta el rendimiento de nuestro programa. Los flujos tienen las mismas características de rendimiento que las listas .
Sintaxis:
val str = 1 #:: 2 #:: 3 #:: Stream.empty
En Scala, una lista se puede construir con el operador :: , mientras que una secuencia se puede construir con el método del operador #:: Stream.empty
, usando al final de la expresión. En la sintaxis anterior, la cabeza de esta secuencia es 1, y la cola tiene 2 y 3.
Operaciones en flujo
Crear una secuencia: a continuación se muestran los ejemplos para crear secuencias en Scala.
Ejemplo :
// Program to creating an empty stream // Creating object object GFG { // Main method def main(args:Array[String]) { // Creating stream val stream = 1 #:: 2#:: 8 #:: Stream.empty println(stream) } }
Producción:
Stream(1, ?)
En el resultado anterior, podemos ver que el segundo elemento no se evalúa. Aquí, se muestra un signo de interrogación en lugar del elemento. Scala no evalúa la lista hasta que se requiere. La cola no se imprime porque aún no se ha calculado. Los flujos se especifican para el cálculo perezoso.
Crear un Stream usando Stream.cons: También podemos crear un Stream usando Stream.cons. Se utiliza un paquete import scala.collection.immutable.Stream.cons
para crear flujos.
Ejemplo :
// Program to creating an stream // using cons import scala.collection.immutable.Stream.cons // Creating object object GFG { // Main method def main(args:Array[String]) { // Creating stream val stream2: Stream[Int] = cons(1, cons(2, cons(3, Stream.empty) ) ) println(s"Elements of stream2 = ${stream2}") } }
Producción:
Elements of stream2 = Stream(1, ?)
Uso de la función de toma en la transmisión: la función de toma se usa para tomar elementos de la transmisión. A continuación se muestra el ejemplo del uso de la función de toma.
Ejemplo :
// Program to Using take function on stream // Creating object object GFG { // Main method def main(args:Array[String]) { // Creating stream val stream = 1 #:: 2#:: 8 #:: Stream.empty println(stream) // Taking elements from stream print("Take first 2 numbers from stream = ") stream.take(2).print print("\nTake first 10 numbers from stream2 = ") stream.take(10).print } }
Producción :
Stream(1, ?) Take first 2 numbers from stream = 1, 2, empty Take first 10 numbers from stream2 = 1, 2, 8, empty
Cuando quisimos tomar 10 números de un Stream, aunque solo contenía 3 elementos, no arrojó ninguna excepción IndexOutOfBoundsException.
Uso de la función de mapa en la transmisión: la función de mapa se utiliza para realizar operaciones en la transmisión.
Ejemplo :
// Scala program to using map function on stream // Creating object object GFG { // Main method def main(args:Array[String]) { // Creating stream val stream = 1 #:: 2#:: 8 #:: Stream.empty println(stream) // map elements from stream println(stream.map{_+5}) } }
Producción:
Stream(1, ?) Stream(6, ?)
En el ejemplo anterior, al usar la función de mapa, estamos transformando la colección de entrada en una nueva colección de salida.
Inicialice una secuencia vacía: el código siguiente muestra cómo inicializar una secuencia vacía.
Ejemplo :
// Program to create empty stream // Creating object object GFG { // Main method def main(args:Array[String]) { // Creating empty stream val emptyStream: Stream[Int] = Stream.empty[Int] println(s"Empty Stream = $emptyStream") } }
Producción:
Empty Stream = Stream()
Publicación traducida automáticamente
Artículo escrito por DivyaPareek y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA