Escala | método flatMap

En Scala, el método flatMap() es idéntico al método map() , pero la única diferencia es que en flatMap se elimina la agrupación interna de un elemento y se genera una secuencia. Se puede definir como una combinación de método de mapa y método de aplanamiento . El resultado obtenido al ejecutar el método map seguido del método flatten es el mismo que obtiene flatMap() . Entonces, podemos decir que flatMap primero ejecuta el método map y luego el método flatten para generar el resultado deseado.
Nota:

  • Tiene una clase de opción incorporada , ya que una opción se puede expresar como una secuencia que tiene como máximo un elemento, es decir, está vacía o tiene solo un elemento.
  • El método flatten() se utiliza para desintegrar los elementos de una colección de Scala con el fin de construir una sola colección con los elementos de tipo similar.

Veamos un ejemplo para ilustrar cómo funciona flatMap .

val name = Seq("Nidhi", "Singh")

Caso 1:
apliquemos map() y flatten() en la secuencia indicada.

// Aplicando map()
val result1 = nombre.map(_.toLowerCase)

//
Lista de salida (nidhi, singh)

// Aplicando flatten() ahora,
val result2 = result1.flatten

//
Lista de salida (n, i, d, h, i, s, i, n, g, h)

Caso 2:
apliquemos flatMap() directamente en la secuencia dada.

name.flatMap(_.toLowerCase)
 
// Output
List(n, i, d, h, i, s, i, n, g, h)

Entonces, podemos ver aquí que el resultado obtenido en ambos casos es el mismo, por lo tanto, podemos decir que flatMap es una combinación de map y flatten method.
Ahora, veamos algunos ejemplos del método flatMap .

  • Utilizando flatMap en una secuencia de strings.
    Ejemplo:

    // Scala program of flatMap
      
    // Creating object
    object GfG
      
        // Main method
        def main(args:Array[String])
        {
      
            // Creating a sequence of strings
            val portal = Seq("Geeks", "for", "Geeks")
      
            // Applying flatMap
            val result = portal.flatMap(_.toUpperCase)
      
            // Displays output
            println(result)
      
        }
    }
    Producción:

    List(G, E, E, K, S, F, O, R, G, E, E, K, S)
    

    Aquí, flatMap se aplica a la secuencia indicada, por lo que se genera una lista de secuencias de caracteres.

  • Aplicando flatMap con otras funciones.
    Ejemplo :

    // Scala program of flatMap
      
    // Creating object
    object GfG
      
        // Main method
        def main(args:Array[String])
        {
      
            // Creating a list of numbers
            val list = List(2, 3, 4)
      
            // Defining a function
            def f(x:Int) = List(x-1, x, x+1)
      
            // Applying flatMap
            val result = list.flatMap(y => f(y))
      
            // Displays output
            println(result)
      
        }
    }
    Producción:

    List(1, 2, 3, 2, 3, 4, 3, 4, 5)
    

    Aquí, flatMap se aplica a la otra función definida en el programa y así se genera una lista de secuencias de números. Veamos cómo se calcula la salida.

    List(List(2-1, 2, 2+1), List(3-1, 3, 3+1), List(4-1, 4, 4+1))
    
    // After evaluation we get,
    List(List(1, 2, 3), List(2, 3, 4), List(3, 4, 5))
    

    Entonces, el primer paso funciona como aplicar el método de mapa en la otra función indicada.

    List(1, 2, 3, 2, 3, 4, 3, 4, 5)
    

    El segundo paso funciona como aplicar flatten a la salida obtenida por el método del mapa en el primer paso.
    Ejemplo :

    // Scala program of flatMap
      
    // Creating object
    object GfG
      
        // Main method
        def main(args:Array[String])
        {
      
            // Creating a sequence of numbers
            val seq = Seq(4, 5, 6, 7)
      
            // Applying flatMap on another
            // function
            val result = seq flatMap { s =>
                            Seq(s, s-1)
            }
      
            // Displays output
            println(result)
      
        }
    }
    Producción:

    List(4, 3, 5, 4, 6, 5, 7, 6)
    

    Aquí, también se obtiene una salida como el primer ejemplo de flatMap con otras funciones.

  • Utilizando flatMap en declaraciones if-else.
    Ejemplo :

    // Scala program of flatMap
      
    // Creating object
    object GfG
      
        // Main method
        def main(args:Array[String])
        {
      
            // Creating a sequence of numbers
            val seq = Seq(8, 15, 22, 23, 24)
      
            // Applying flatMap on if-else
            // statement
            val result = seq flatMap { s =>
                    if (s % 3 == 0) Seq(s)
                    else Seq(-s)
            }
      
            // Displays output
            println(result)
        }
    }
    Producción:

    List(-8, 15, -22, -23, 24)
    

    Aquí, si un elemento de la secuencia dada satisface la condición establecida, ese elemento se devuelve; de ​​lo contrario, se obtiene un elemento negativo.

Publicación traducida automáticamente

Artículo escrito por nidhi1352singh 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 *