Escala | Comprensiones de secuencias

Las comprensiones tienen la estructura para (enumeradores) producen e , donde los enumeradores se refieren a una lista de enumeradores separados por punto y coma. Enumerator es un generador que introduce nuevas variables o es un filtro. Una comprensión evalúa el cuerpo e para cada enlace generado por los enumeradores y devuelve una secuencia de esos valores. En esto, Scala ofrece una notación ligera para transmitir comprensiones de secuencias . En la secuenciación, es posible realizar extracciones múltiples sin mapas planos. Esto es posible mediante dos métodos, haciendo que el producto cartesiano se repita o secuenciando la lista de objetos. Una forma más de no usar el mapa plano es planificar una sintaxis especial generada automáticamente para Validación en Scala.
comprensión de una secuenciaLa declaración tiene una parte generadora que genera una lista de valores del rango especificado de entradas y una declaración que opera en estos elementos generados que luego se almacenan en la lista de salida para ser devueltos al final del cálculo. Todos los tipos de datos que admitan las operaciones withFilter, map y flatMap (con los tipos adecuados) se pueden usar en comprensiones de secuencias.
Entendamos algunos ejemplos.
Ejemplo 1: 
 

Scala

// Scala program of sequence comprehensions
 
// Creating an object with extending APP
object CT extends App
{
    // Defining function with sequence comprehensions
    def even(from: Int, to: Int): List[Int] =
    for (a <- List.range(from, to) if a % 4 == 0) yield a
        Console.println(even(0, 20))
}

Producción: 
 

List(0, 4, 8, 12, 16)

Aquí, en el ejemplo, una nueva variable i de Integer está limitada a todos los valores de la lista List(from, from + 1, …, to -1) . Si i % 4 == 0 , elimina todos los números impares de la lista y da como resultado el número que es completamente divisible por 4 entre 0 y 20.
Ejemplo #2: 
 

Scala

// Scala program of sequence comprehensions
 
// Creating object with extending App
object ComprehensionTest2 extends App
{
    // Defining function with sequence comprehensions
    def AddTill(n: Int, x: Int) =
        for (i <- 0 until n;
            j <- i until n if i + j == x) yield
        (i, j);
         
    // Calling function
    AddTill(12, 20) foreach
    {
        case (i, j) =>
        println(s"($i, $j)")
    }
}

Producción: 
 

(9, 11)
(10, 10)

Aquí, en el ejemplo, se muestra que las comprensiones de secuencias no se restringen a las listas: todas las operaciones admiten flatMap. Entonces, la salida calcula todos los pares de números entre 0 y n-1 cuya suma es igual a un valor x dado .
 

Publicación traducida automáticamente

Artículo escrito por adityadubey10 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *